كيفية مسح الرسومات على عنصر تحكم شفاف في نماذج Windows

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

سؤال

لذلك، أنا لست على دراية بتطوير نماذج 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 يحول التحكم بالكامل إلى اللون الأسود.

هل هناك طريقة لمسح المحتويات المرسومة لعنصر التحكم؟

لقد لاحظت أن تغيير حجم عنصر التحكم سيؤدي إلى مسح الخلفية.

الأشياء التي لا تعمل

  1. تجاوز 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.

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