الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في التعامل مع الألوان.

مغلق
بدأه الكـتـكوت في 10 ديسمبر 2004 · 4 رد · 449 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أخواني الأعزاء في هذا المنتدى أرجو توضيح كيفية التعامل مع الألوان في

الفيجوال سي ++ .

أي كيف أستطيع وضع لون خلفية النافذة بطريقة RGB وكذلك في بعض دوال ال API

التي تطلب لون من نوع BRUSH.

#3

أقصد في ال Windows أخوي مو في ال CONSOLE .

يعني خلفية نافذة وغيرها.

#4

يتم النعمل مع الالوان فى الوندوز على هيئة متغير DWORD

حيث DWORD هو عبارة عن 32 بت. و كما تعلم ان كل لون يمكن تمثيله

بواسطة نسب مكوناته الثلاثة RGB (red,gren,blue).

فيمكن وصف اللون بذكر المركبات الثلاثة.

مثلا الاسود = RGB(0,0,0). هذه هى تركيبة اللون الاسود و كذلك بقية الالوان.

اللون الابيض هو RGB(255,255,255)

قد تكون لاحظت ان كل قيمة للون تكون بين 0 و 255. لان كل الالوان تقع بين الابيض و الاسود.

و الان بقى لنا ان نربط ال DWORD بهذه التركيبة.

هنا اود ان استعين بصورة لكن لا اجد طريقة :).

حسنا, كما يعلم الجميع ان البايت يحوى 8 بت. ولكى نخزن متغير يتراوح بين 0و 255

يجب علينا استخدام 8 بت, يعنى بايت. و ال DWORD هو عبارة عن 4 بايت, اذن علينا

دمجهم جميعا حتى ننتج اللون فى DWORD مع مراعاة الترتيب RGB. و الان السوال

هو ما الفائده من البايت الضائع. حقيقة و على حسب علمى انه

هناك بايت ضائع عند التعامل مع الالوان فى ال GDI. لانى لم اجد متغير WORDANDHALF.

بهذه الطريقة يمكنك تمثيل الالوان.

و الان دعك من التنظير الكثير و الثرثرة. دعنا نلقى نظرة على القليل من ال Win32 API

هنا يتم تعرف اللون فى المتغير COLORREF و هو ليس الا DWORD.

و يمكننا ملؤه بالماكرو

RGB(R,G,B)

يعنى السطر التالى صحيح

COLORREF crColor = RGB(210,210,210)

و هنا ننشئ لون رمادى يشبه الرمادى المستخدم فى صناديق الحوار.

بعد الان اظن انه يمكنك التعامل مع الالوان فى جميع الدوال التابعة لل GDI.

ملاحظة:

البايت الاخير الضائع, يتم اساخدامه فى Direct3D حتى يمثل الشفافية فى الون الشئ الذى يغير اسمه الى البايت الغير ضائع :)

#5

ألف شكر أخوس justnow على هذا الشرح الأكثر من رائع.

هذا الموضوع مغلق.

مواضيع مشابهة