التشغيل التفاعلي WPF: نظرة عامة p,g مناطق hgإطار و "airspace"
"airspace" طريقة تصورية من التفكير على كيفية مشاركة نصفي تطبيق التشغيل التفاعلي مع مناطق التقديم داخل نافذة المستوى الأعلى الشائعة. هذا الموضوع يوضح كيفية التأثير على تصميم العرض التقديمي "airspace" كاعتبارات الإدخال الخاصة بتطبيق التشغيل التفاعلي WPF.
airspace
ضمن نافذة المستوى الأعلى، يمكنك الحصول على مبدأ يحتوي على كل HWND التي تشمل أحد تقنيات تطبيق التشغيل التفاعلي الخاصة به "airspace" ينتمي كل بكسل ضمن النافذة إلى HWND واحد الذي يوزع airspace HWND ذلك. (حصرياً, يوجد أكثر من واحد WPF airspace إذا كان هناك أكثر من واحد WPF HWND، ولكن بهدف شرح المفهوم, إفترض وجود واحد فقط في الأمثلة في هذا الموضوع). مفهوم airspace تستلزم أن كافة الطبقات أو الإطارات الأخرى تحاول تقديم أعلاه ذلك البكسل أثناء مدة حياة التطبيق التي يجب أن تكون جزءاً من تكنولوجيا تقديم نفس المستوى. محاولة تقديم WPF بكسل عبر Win32 تؤدي إلى نتائج غير مرغوب فيها, و غير مسموح بها على قدر الإمكان خلال التشغيل التفاعلي واجهات API.
airspace بواسطة مثال
يوضح المثال الأول التطبيق الذي يمزج Win32 ، DirectX ، و WPF. كل تكنولوجيا تستخدم مجموعة خاصة و منفصلة من البكسل، و لا يوجد مشكلات airspace.
ولكن بفرض البدء من ذلك التطبيق و إنشاء حركة التي يتحكم بها موضع مؤشر الماوس و بالتالي يمكن محاولة التقديم على أيٍ من هذه المناطق الثلاث. هذا يؤدي إلى انتهاك airspace. بغض النظر عن التقنية التي كانت مسئولة عن الحركة نفسها, تلك التقنية سوف تقوم بانتهاك airspace للإثنين الآخرين. يتم توضيح هذا في الصورة التالية، حيث تحاول الدائرة الخضراء التنقل حول النافذة:
تم انتهاك آخر airspace إذا حاولت استخدام خلط الشفافية/ألفا بين التقنيات المختلفة. في الصورة أدناه WPF المربع يقوم بانتهاكWin32 و DirectX airspace. لأن البكسل في ذلك المربع WPF هي شبه-شفافة, ييجب أن يتم امتلاكها جماعيا بواسطة DirectX و WPF ، و هو غير ممكن. بحيث أن هذا هو انتهاكًا آخر airspace و لا يمكن إنشاؤها:
تستخدم الأمثلة الثلاثة السابقة مناطق مستطيلة ولكن airspace غير مستطيلة بالضرورة. يمكن أن يكون مستطيل بفتحة (على سبيل المثال، Win32 airspace هنا كل شيء باستثناء WPF و DirectX airspace):
يمكن أن يكون airspaces بالكامل غير مستطيل أو أي شكل موصوف بواسطة Win32 HRGN (المنطقة):
نافذة شفافية و المستوى الأعلى
عملية إدارة الإطار (في كلا Windows Vista و Microsoft Windows XP) فقط فعلاً بمعالجة Win32 HWNDs ، لذلك كل WPF Window HWND. Window يجب أن تلتزم HWND بالقواعد العامة لأي HWND. ضمن ذلك HWND ، WPF التعليمات البرمجية يمكنها تنفيذ أي من الإجماليةWPF واجهات API الدعم. ولكن للتعامل مع الآخرين HWNDs من سطح المكتب، WPFيجب أن تلتزم بواسطة Win32معالجة و قواعد التقديم. WPF supports non-rectangular windows by using Win32 واجهات API—HRGNs for non-rectangular windows, and layered windows for a per-pixel alpha.
أولي ثابتة و مفاتيح الألوان غير معتمدة. Win32تختلف قدرات إطار الطبقات بواسطة النظام الأساسي.
النوافذ ذات الطبقات يمكنها جعل النافذة بأكملها شفافة (شبه) بواسطة تحديد قيمة ألفا لتطبيقها إلى كل بكسل في النافذة. (Win32 في الواقع يدعم ألفا لكل بكسل و لكن استخدام هذا صعب جداً في البرامج العملية لأن في هذا الوضع عليك رسم أي HWND تابعة بنفسك بما في ذلك مربعات الحوار و المنسدلة).
WPF يدعم HRGNs; مع ذلك، هناك لا تتم إدارةواجهات API للحصول على هذه الوظيفة. يمكنك استخدام استدعاء النظام الأساسي و HwndSource لاستدعاء ذات الصلة فيWin32 واجهات API. لمزيد من المعلومات، انظر استدعاء الدالات الأصلي من التعليمات البرمجية المدارة.
WPF النوافذ ذات الطبقات لها إمكانيات مختلفة عن أنظمة التشغيل المختلفة (وهذا لأن WPF يستخدم DirectX للتقديم و النوافذ ذو طبقات بشكل أساسي مُصممة من أجل GDI تقديم, لا DirectX التقديم):
WPF يدعم أجهزة النوافذ ذات طبقات المسرعة علىWindows Vista. نوافذ الأجهزة المسرعة ذات طبقات على Microsoft Windows XP تتطلب دعم من Microsoft DirectX ، بحيث تعتمد القدرات على الإصدار Microsoft DirectX على هذا الجهاز.
WPF لا يدعم مفاتيح لون الشفافية لأنWPF لا تضمن تقديم اللون المطابق الذي طلبته, بشكل خاص عندما يكون من الأجهزة المسرعة.
إذا تم التشغيل على Microsoft Windows XP ، نوافذ ذو طبقات أعلى DirectX الأسطح تومض عند DirectXتقديم التطبيق. (يكون تسلسل التقديم الفعلي واجهة جهاز رسومية في Microsoft Windows (GDI) إخفاء النافذة ذو طبقات، ثم DirectX رسم ، ثم واجهة جهاز رسومية في Microsoft Windows (GDI) يضع النافذة ذو طبقات مرة أخرى). غير WPF النوافذ ذات طبقات أيضاً لها هذا القيد.
راجع أيضًا:
المهام
برنامج تعليمي إنشاء تطبيق Win32 يستضيف محتوى WPF
برنامج تعليمي إنشاء تطبيق WPF يستضيف محتوى Win32