كيفية تحقيق ألوان خلفية شفافة على تحكم Winforms الأصلي؟

StackOverflow https://stackoverflow.com/questions/4339121

سؤال

أنا على وشك أن أفقد عقلي هنا.
لماذا لا تمتزج التحكم في مربع الاختيار مع ما وراء ذلك؟
ينطبق السؤال على جميع عناصر التحكم في WinForms ، لكنني أستخدم هذا كمثال.

صورة تساوي ألف كلمة:

alt text

وبعض الكلمات الأخرى:
ماذا وراء CheckBox ملون PictureBoxES و Button.
ال CheckBoxBackColor تم تعيينه على Transparent. لكن بطريقة ما تقرر أن هذا يعني أنه ينبغي مشاركة BackColor من المحتوى Form (هل هذه فكرتها عن وهم الشفافية؟).

أليس هذا ممكنا في winforms؟ يمكن أن أقسم أنني فعلت هذا من قبل.

تحديث:
لقد جربت هذا للتو:
على هذا النموذج ، اضبط CheckBoxBackColor إلى Transparent, ، ثم تغيير BackColor من المحتوى Form لبعض الألوان الأخرى ، و CheckBox سوف تطابق ذلك BackColor. ماذا.......؟

هل كانت مفيدة؟

المحلول

كتب بوب باول ممتاز مقال عن الضوابط الشفافة. تحقق من ذلك:

http://www.bobpowell.net/transcontrols.htm

نصائح أخرى

هذا هو تأثير جانبي لعناصر التحكم كونه Windows Windows. النافذة مسؤولة عن رسم نفسها ، فإن أساليب OnPaintback و Onpaint تعتني بذلك.

هذا النموذج التقديم لا يدعم الشفافية بشكل جيد. هناك دعم للشفافية الحقيقية باستخدام النوافذ ذات الطبقات. يتم تنفيذها بواسطة محول الفيديو ، يستخدم Windows ميزة تراكب الأجهزة. لكن هذا لا يعمل إلا لنوافذ Toplevel ، وليس النوافذ الفرعية. لاحظ Form.Opacity و Form.TransparencyKey.

هناك دعم جزئي للشفافية من خلال خدعة. يمكن للسيطرة مزيفة من خلال مطالبة النافذة الأصل برسم نفسها أولاً داخل نافذة التحكم. أن ينتج بكسل الخلفية ، ويمكنه بعد ذلك الرسم فوق ذلك. تعيين خاصية الألوان الخلفية على color.transparent يتيح هذه الخدعة لعناصر التحكم التي تدعم هذا. كل الفئات المشتقة من ButtonBase تفعل. ولكن ليس عناصر التحكم التي هي مغلفة لعناصر التحكم في النوافذ الأصلية.

"سؤال النافذة الأصل" هو المكان الذي يصبح فيه العيب في هذه الخدعة مرئيًا في لقطة الشاشة. أنت ترى بكسل النموذج. لا تنجح تأثيرات التراص ، ولا تعتبر أي نافذة وسيطة في الترتيب z ، فقط الوالد. هذا يمكن تثبيته ولكن جداً قبيح ، هناك مقال KB يوضح الرمز.

كما هو ملحوظ أيضًا أن WPF ليس لديه هذا التقييد. الضوابط ليست نوافذ ، فهي تقدم عن طريق طلاء أنفسهم على رأس الوالد. طبقات من الطلاء. الشفافية الآن تافهة ، فقط لا ترسم.

هل يمكنك ضبط اللون الخلفي من خانة الاختيار يدويًا على اللون الذي تريده؟ (القيمة في صندوق الصورة وراءه)

قد تعني "الشفافة" شيئًا مختلفًا عما تريده MS.

أيضًا ، حاول تغيير Zorder of Pictureboxes (أحضر إلى الأمام) ومعرفة ما إذا كان هذا يغير لون مربع الاختيار الأساسي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top