سؤال

أرغب في إنشاء تطبيق C# بنوافذ متعددة تكون جميعها شفافة مع وجود بعض النصوص عليها.

الجزء الصعب هو جعل هذه النماذج موجودة أعلى سطح المكتب ولكن أسفل أيقونات سطح المكتب.هل هذا ممكن؟

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

المحلول

إن مجرد جعل النافذة شفافة هو أمر بسيط للغاية:

this.BackColor = Color.Fuchsia;
this.TransparencyKey = Color.Fuchsia;

يمكنك القيام بشيء مثل هذا لجعله لا يزال بإمكانك التفاعل مع سطح المكتب أو أي شيء آخر أسفل نافذتك:

public const int WM_NCHITTEST = 0x84;
public const int HTTRANSPARENT = -1;

protected override void WndProc(ref Message message)
{
    if ( message.Msg == (int)WM_NCHITTEST )
    {
        message.Result = (IntPtr)HTTRANSPARENT;
    }
    else
    {
        base.WndProc( ref message );
    }
}

نصائح أخرى

شكرا للنصائح جيف.لا يزال ليس تمامًا ما أسعى إليه.أود أن تظهر النافذة كما لو كانت جزءًا من سطح المكتب بحيث يمكن وضع الرموز أعلى النموذج الخاص بي.

ربما هناك طريقة مختلفة للقيام بذلك.هل يمكنني بالفعل رسم النصوص والرسومات مباشرة على سطح المكتب؟

الطريقة الموصوفة أعلاه بواسطة Jeff Hillman فعالة في جعل النافذة شفافة، مما يمنحك القدرة على إظهارها كما لو كانت جزءًا من سطح المكتب (الذي ذكرته هو هدفك.

إحدى المشكلات التي قد تواجهها، والتي واجهتها مؤخرًا أيضًا، هي الرسم إلى النافذة باستخدام أي مجموعة من علامات منع التعرج.على وجه التحديد، باستخدام DrawText، يتم عرض أي نص يتم عرضه باستخدام مجموعة علامات منع التعرج كما لو كانت الخلفية غير شفافة.والنتيجة النهائية هي أن تحصل على نص به حدود طفيفة اللون حوله.أنا متأكد من أن هذا ينطبق على أي شيء آخر أيضًا، على الرغم من أنني لم أحاول.

هل هناك أي أفكار حول كيفية حل ذلك؟

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