PDA

View Full Version : ارتباط بین متغیرهای رنگ



MMR_1344
جمعه 11 شهریور 1390, 01:35 صبح
با سلام
میخواستم بدونم رابطه بین رنگهای

Red , Green , Blue
و شفافیت این رنگها در زمان نمایش یعنی

Hue , Luminance , Satrution
چی هست و چگونه این ارتباط تعیین میشه

setroyd
جمعه 11 شهریور 1390, 02:00 صبح
منظورت کاملا نا مفهومه !!! واضح بگو لطفا

MMR_1344
یک شنبه 13 شهریور 1390, 19:59 عصر
ببین دوست خوب
هر رنگی با ترکیب سه رنگ قرمز - سبز و آبی تشکیل میشه که با ترکیب این سه رنگ میشه اونها رو ایجاد کرد
اما شفافیت رنگها یعنی روشنی یا کم رنگ بودن اونها از سه متغیر دیگه استفاده میکنه میخوام این ارتباط رو ببینم
همچنین در رابطه با یک رنگ خاص که مثلاً زرد باشه اگر بخوام درون فرمم استفاده کنم چه طوری میتونم اون رو از زرد کم رنگ تا زرد تیره تغییر بدم

MMR_1344
دوشنبه 14 شهریور 1390, 01:09 صبح
ببین دوست خوب در شکل زیر سه متغیر Red Green و Blue برای تعیین رنگ هست و سه متغیر Hue Sat و Lumبرای شفافیت رنگ تعریف شده که معمولاً برای شفاف شدن رنگ مقدار Lum تغییر میکنه رابطه ای برای اون میخواستم که بدونم این هعداد به چه ترتیب تغییر میکنند
در ضمن من متغیری رو بصورت Double تعریف کردم که وقتی سه مقدار قرمز سبز و آبی رو به اون میدم رنگ مورد نظر رو بر اساس فرمول B*65536+g*256+r بدست بیاره ولی همیشه خطای OverFlow میده
مرسی

vbhamed
دوشنبه 14 شهریور 1390, 09:47 صبح
سلام

براي محاسبه نياز به Double نيست همون Long كافيه چون نهايت عدد 16777215 هستش ولي بايد همه متغيرهاتون از نوع Long باشه
Dim c&, R&, B&, G&

R = 255
G = 255
B = 255

c = B * 65536 + G * 256 + R

ضمنا يه راه راحت تر هم هست
Dim c&, R&, B&, G&

R = 255
G = 255
B = 255

c = RGB(R, G, B)


حالا فرض كنيد قراره رنگ قرمز رو بسازيم كه ميشه Rgb(255,0,0)
اگر دو رنگ ديگه رو به طور همزمان و برابر هم از 0 تا 255 تغيير بديم و قرمز همون 255 باشه، اونموقع درجه تيرگي و روشني رنگ قرمز تغيير مي كنه

MMR_1344
سه شنبه 15 شهریور 1390, 15:23 عصر
با تشکر از لطف دوستان
دوست خوب جناب vbhamed با تشکر فقط مشکل اینجاس که اگر من متغیر به صورت Long تعیرف کنم و رابطه زیر رو برای اون بنویسم

Dim c as long
c=b*65536 + g*256 + r

خطا میده و حتماً بایستی به صورت زیر وارد بشه

c=b*65536 + g*256! +r
میخواستم بدونم مشکل اون چیه
در ضمن دوست خوب درسته اگر دو رنگ آبی و سبز رو به تنهائی تغییر بدیم رنگ از تیره تا روشن درست میشه اما مثل تغییر در سه مقدار Hue Sat و Lum نمشه
برای تغییر این مقادیر چگونه میشه عمل کرد و رابطه اونها با رنگ در چیه
مرسی

vbhamed
چهارشنبه 16 شهریور 1390, 09:26 صبح
سلام
فكر كنم پست قبليتون اشتباه داره چون تو هر دوتاش يك كد نوشتين
اگر قرار مستقيما ضرب كنيد همه پارامترها يعني c,r,g,b بايد Long باشن ولي اگر از تابع RGB استفاده مي‌كنيد پارامترهاي اين تابع هز نوع Integer هستند و فقط C يعني نتيجه تابع بايد Long باشه

MMR_1344
چهارشنبه 16 شهریور 1390, 12:45 عصر
متشکر از پاسخ ارسالی
من اشتباهمو در رابطه با تععیین رنگ فهمیدم اما هنوز در ارتباط با سه متغیر دیگه چیزی نمیدونم (Hue , Luminance , Satrution)
باز هم متشکر

MMR_1344
پنج شنبه 17 شهریور 1390, 00:47 صبح
کسی در رابطه با نحوه عملکرد این سه متغیر در تغییر رنگ نمیدونه

MMR_1344
شنبه 19 شهریور 1390, 08:59 صبح
دوستان عزیز کسی راجب سه متغیری که در خصوص شفافیت رنگ هست اطلاعی نداره چون خود ویندوز هم از این سه متغیر استفاده میکنه

vbhamed
دوشنبه 21 شهریور 1390, 03:43 صبح
سلام

اينم نمونه

MMR_1344
دوشنبه 21 شهریور 1390, 10:19 صبح
دوست عزیز
با تشکر از لطف شما اما اگر برنامه پیوست رو ببینی ملاحظه میشه که با هر بار تغییر در مقدار Luminance رنگ تصویر روشنتر و یا تیره تر میشه من از روابط بکار رفته چیزی متوجه نشدنم که چه تغییراتی در رنگ بوجود میاد

setroyd
دوشنبه 21 شهریور 1390, 12:24 عصر
با تشکر از لطف دوستان
دوست خوب جناب vbhamed با تشکر فقط مشکل اینجاس که اگر من متغیر به صورت Long تعیرف کنم و رابطه زیر رو برای اون بنویسم

خطا میده و حتماً بایستی به صورت زیر وارد بشه

میخواستم بدونم مشکل اون چیه
در ضمن دوست خوب درسته اگر دو رنگ آبی و سبز رو به تنهائی تغییر بدیم رنگ از تیره تا روشن درست میشه اما مثل تغییر در سه مقدار Hue Sat و Lum نمشه
برای تغییر این مقادیر چگونه میشه عمل کرد و رابطه اونها با رنگ در چیه
مرسی

به این دلیل خطا میده که شما اگه c رو از long تعریف کنی محدود به مقدار long میشه ولی اگه تعریف نکنی vb اون رو variant میخونه که این محدودیت رو از بین میبره

MMR_1344
دوشنبه 21 شهریور 1390, 16:51 عصر
جناب setroyd
با تشکر از محبت شمادر ارتباط با نحوه تعیین رنگ متوجه شدم در ارتباط با تعیین مقادیر Sat Hue و Lum میخواستم بدونم چگونه این سه متغیر در رنگ یا روشنائی اون تاثیر میزارن یعنی میخوام بدونم چطوری میشه رنگ مورد نظر رو که از سوی کاربر انتخاب شده در صورت بروز حالتی شفافتر کرد مثلاً وارد شدن عددی یا رنگ اون رو تیره تر کرد (مهم حالت های رشن یا تیره شدن رنگ هست) مثل تصویر موجود در تاپیک شماره 4
Tank You

MMR_1344
سه شنبه 22 شهریور 1390, 12:27 عصر
با سلام
من فایل نمونه ساختم میخوام در اکتیو ایکس موجود چنانچه موس در روی اون قرار گرفت رنگ اون روشن یعنی مقدار Lum رنگ مورد نظر بیشتر بشه و اون رو نمایش بده
در صورت فشرده شدن موس رنگ اون تیره یعنی Lum اون کمتر بشه
و در نهایت اگر موس از روی اون اکتیو ایکس خارج شد رنگ به حالت اولیه برگرده
متشکرم اگر راهنمائی کنید
:گیج::گیج::گیج:

setroyd
سه شنبه 22 شهریور 1390, 13:26 عصر
برای یک عکس سنگین میشه و کنترل کند میشه چون این کار با پیکسل سروکار داره کندت میکنه برای ساخت اکتیویکس شما اگه هدفت ساخت command button هست میتونی از متدهای گرافیکی استفاده کنی که خیلی بهتر و سریعتر هست ولی اگه میخوای فقط رنگ رو عوض کنی مشکلی نیست چون کند نمیکنه ولی اینجوری هرچی کنترل شما بزرگتر باشه مقدار پیکسل هم بیشتر میشه و در نتیجه سرعت کاهش پیدا میکنه .

setroyd
سه شنبه 22 شهریور 1390, 14:12 عصر
برات گذاشتم با این تابع سرعتت هم پایین نمیاد غیر از رزولیشن کارای دیگه هم میتونی انجام بدی یه تو type نوشته موفق باشی .

MMR_1344
سه شنبه 22 شهریور 1390, 14:27 عصر
مرسی دوست خوب
ولی من برنامه ارسالی رو برای نمونه گذاشتم میخوام بدونم اگر بخوام رنگ رو بر اساس اون سه متغیر مورد نظر تغییر بدم چگونه ممکنه
من فقط ارتباط اون متغیر ها رو با رنگ میخوام بدست بیارم
با سپاس از شما

setroyd
سه شنبه 22 شهریور 1390, 14:46 عصر
اون کد کوچیکی نیست سخته به دست اوردنش نیاز به فرمول نویسی داره . اگه پیدا کردم برات میزارم

MMR_1344
پنج شنبه 24 شهریور 1390, 11:41 صبح
دوست خوب رابطه مورد نظر رو هنوز پیدا نکردی

پس چطور ویندوز میتون اینکار رو انجام بده؟

setroyd
پنج شنبه 24 شهریور 1390, 14:02 عصر
دوست خوب رابطه مورد نظر رو هنوز پیدا نکردی

پس چطور ویندوز میتون اینکار رو انجام بده؟

من ویندوز رو دقت نکردم بهش کجاشو میگی ؟؟

ببین بهت قول دادم برات مینویسم بخدا از دیروزه پاشم ولی تو نت نتونستم پیدا کنم ولی خدارو شکر تونستم بنویسم ببین کداش راحته ها کاری نداره فقط اینکه دیر به مغذ میرسه چون زمینه ای نداشتم برام سخت بود نوشتنش . هرجاشو نفهمیدی بگو برات توضیح بدم البته همش رو اونجا برات توضیح دادم هم با api برات نوشتم هم با vb ولی api سریع تره .

موفق باشی

setroyd
پنج شنبه 24 شهریور 1390, 15:16 عصر
ببین مثل ویندوز اومدم درست کنم تقریبا شد ولی یکم bug داره مثلا به تناسب کم نمیکنه کلا یکم خراب مرابه ولی میتونه کارتو راه بندازه هرجاشو نفهمیدی بگو برات بگم شرمنده اگه متغیرهارو همینجوری با هر اسمی dim کردم خسته بودم حوصله نداشتم بهرحال موفق باشی .