ما هي أفضل طريقة لرسم رسومات التراكب على ويندوز؟

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

  •  16-09-2019
  •  | 
  •  

سؤال

أنا أعمل مع تطبيق Win32 الذي يحتاج إلى إنشاء مجموعة متنوعة من أنواع النوافذ المخصصة. على وجه الخصوص، غالبا ما تكون هذه النوافذ غير مستطيل، أو لها ظلال أو شفافة في الغالب.

أنا حاليا باستخدام WS_EX_LAYERED مع UpdateLayeredWindow لإنشاء نوافذ شفافة يمكنني إرسال رسوماتي التعسفية. ومع ذلك، أجد أن نوافذ طبقة يجب أن تحد من أنه لا يمكنك أن يكون لديك نوافذ للأطفال الطبقات، ولا يمكن أن تستضيف نافذة الطبقات بشكل صحيح عناصر تحكم Win32 "عادي".

قاعدة التعليمات البرمجية لدينا هي عدة سنوات، باستخدام Win32 و GDI في الغالب، لكننا في عملية تحديث الأشياء وحان الوقت للنظر في التقنيات الأحدث.

لقد فكرت في إنفاذي المخصص في WPF، لكنني قلق بشأن ما قرأته عن مشكلات "المجال الجوي". يبدو أن WPF يستخدم نوافذ الطبقات لإنجاز مزج ألفا لكل بكسل، ويبدو أنه يبدو أيضا من القيود التي شهدتها سابقا.

لا أعرف الكثير (أي شيء، حقا) حول Direct2D، ولكن هذه التكنولوجيا تبدو وكأنها قد تكون مثيرة للاهتمام. رغم ذلك، لا يمكنني العثور على أي مراجع حتى يتمكن من القيام بنوافذ تراكب.

لذلك، كل هذا يجلبني إلى مشكلتي: ما هي أفضل التكنولوجيا للقيام بنوافذ تراكب تحت ويندوز؟ (Vista و Win7 بحد أدنى، سيكون XP من الجميل أن يكون)

هل أهملت بعضا، وخاصة التكنولوجيا الجيدة؟ سيكون موضع تقدير أي اقتراحات.

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

المحلول

أوصي Direct2D وكتابة DirectWrite حيث تحصل على عرض عالي الجودة بسرعة يبعث على السخرية مقارنة إما GDI أو أي شيء تم القيام به في مساحة .NET. المشكلة الوحيدة هي أنك تحتاج إلى نظام التشغيل Vista أو Windows لاحقا لاستخدامه.

نصائح أخرى

يستطيع WPF أن يفعل ما تبحث عنه بسهولة شديدة، ولكن هذه الميزة المعينة من WPF (Windows مع شفافية لكل بكسل) يميل إلى أن تكون مشكلة شديدة بسبب بقات برامج تشغيل الرسومات (لا تختبر مصنعي الأجهزة الرسومية على ما يبدو نوافذ Direct3D ذات الطبقات بكسل ألفا قيمة جيدة جدا).

يستخدم WPF نوافذ الطبقات للشفافية، لكنها لا تستخدم عناصر تحكم WIN32 "العادية"، وتجسيد جميع عناصر التحكم WPF في نافذة نفسها باستخدام نافذة Win32 واحدة فقط، فهي جميعا تدعم الشفافية.

يحدث إصدار "المجال الجوي" فقط عند استضافة عنصر تحكم WinForms داخل نافذة WPF.

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