كيفية مسح الرسومات على عنصر تحكم شفاف في نماذج Windows
-
05-07-2019 - |
سؤال
لذلك، أنا لست على دراية بتطوير نماذج Windows.
أحاول إنشاء مكون "مرحبًا، أنا مشغول بفعل الأشياء" والذي يدور حول شكل ما.أريد أن يكون عنصر التحكم هذا مؤقتًا وأن يعتمد على أي عناصر تحكم أخرى.يرث الفصل مباشرة من التحكم.
لذلك لدي هذا في المنشئ:
SetStyle(ControlStyles.Opaque, true);
وهذا:
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20;
return parms;
}
}
مما يمنحني عنصر تحكم سيعتمد على عناصر التحكم الأخرى.
الآن مشكلتي هي هذا.أقوم بإعادة رسم عنصر التحكم عدة مرات في الثانية لإضفاء مظهر الرسوم المتحركة السلسة.ومع ذلك، لا أستطيع معرفة كيفية مسح ما تم رسمه في الإطار السابق.استخدام e.Graphics.Clear(Color.Transparent)
في OnPaint
يحول التحكم بالكامل إلى اللون الأسود.
هل هناك طريقة لمسح المحتويات المرسومة لعنصر التحكم؟
لقد لاحظت أن تغيير حجم عنصر التحكم سيؤدي إلى مسح الخلفية.
الأشياء التي لا تعمل
- تجاوز OnPaintBackground لعدم القيام بأي شيء.أو مجرد الاتصال بـ base.OnPaintBackground.نفس النتائج.
المحلول
حسنًا، لقد وجدت الحل هنا:http://www.bobpowell.net/transcontrols.htm
يجب في الواقع إبطال عناصر التحكم الرئيسية من أجل الاحتفاظ بالخلفية الشفافة.
نصائح أخرى
قد تضطر إلى تجاوز OnPaintBackground الذي تقدمه هذه المقالة: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html
قد تحتاج أيضًا إلى إبطال عنصر التحكم عندما يلزم مسحه لفرض استدعاء OnPaintBackground.