Teknoloji Bölgelerine Genel Bakış
WPF, Win32 veya DirectX gibi bir uygulamada birden çok sunum teknolojisi kullanılıyorsa, ortak bir üst düzey pencere içinde işleme alanlarının paylaşılması gerekir. Bu konu, WPF birlikte çalışabilirlik uygulamanızın sunumunu ve girişini etkileyebilecek sorunları açıklar.
Bölgeler
Üst düzey bir pencerede, birlikte çalışabilirlik uygulamasının teknolojisinden birini oluşturan her bir HWND 'nin kendi bölgesine ("hava sahası" olarak da bilinir) sahip olduğunu kavramaya dönüştürebilirsiniz. Penceredeki her bir piksel, bu HWND 'nin bölgesini oluşturan tam olarak bir HWND 'e aittir. (Kesinlikle birden çok WPF HWND varsa, ancak bu tartışmanın amaçları doğrultusunda, yalnızca bir tane olduğunu varsayabilirsiniz. Bölge, uygulamanın yaşam süresi boyunca o pikselin üzerinde işlemeyi deneyen tüm katmanların veya diğer pencerelerin aynı işleme düzeyi teknolojisinin parçası olması gerektiğini belirtir. WPF piksellerine Win32 üzerinden, istenmeyen sonuçlara neden olan ve birlikte çalışabilirlik API 'Leri aracılığıyla mümkün olduğunca izin verilmeyen bir şekilde işleme girişiminde bulunuluyor.
Bölge örnekleri
Aşağıdaki çizimde Win32, DirectX ve WPF 'i hedefleyen bir uygulama gösterilmektedir. Her teknoloji kendi ayrı, çakışmayan bir piksel kümesini kullanır ve hiçbir bölge sorunu yoktur.

Bu uygulamanın fare işaretçisi konumunu kullandığını ve bu üç bölgenin herhangi biri üzerinde işleme girişiminde bulunan bir animasyon oluşturmasını varsayalım. Animasyonun kendisinden sorumlu olduğu herhangi bir teknolojinin ne olduğuna bakılmaksızın, bu teknoloji diğer iki bölgenin bölgesini ihlal edebilir. Aşağıdaki çizimde, bir Win32 bölgesi üzerinde bir WPF dairesini işleme girişimi gösterilmektedir.

Farklı teknolojiler arasında saydamlık/Alfa karıştırma kullanmayı denerseniz başka bir ihlal vardır. Aşağıdaki çizimde, WPF kutusu Win32 ve DirectX bölgelerini ihlal ediyor. Bu WPF kutusundaki pikseller yarı saydam olduğundan, bu mümkün olmayan hem DirectX hem de WPF tarafından ortaklaşa bulunması gerekir. Bu, başka bir ihlalin ve derlenemez.

Önceki üç örnek dikdörtgen bölgeleri kullandı, ancak farklı şekiller mümkündür. Örneğin, bir bölgenin bir deliği olabilir. Aşağıdaki çizimde, bir Win32 bölgesi dikdörtgen delik ile gösterilmektedir ve bu, WPF ve DirectX bölgelerinin bir araya getirilen boyutudur.

Bölgeler Ayrıca tamamen dikdörtgensel olmayan bir şekilde veya bir Win32 HRGN (bölge) tarafından herhangi bir şekil tarafından bir şekilde oluşturulabilir.

Saydamlık ve Top-Level Windows
Windows 'daki pencere yöneticisi yalnızca Win32 hwnds 'yi işler. Bu nedenle, her WPF Window BIR HWND 'dir. WindowHWND tüm HWND 'ler için genel kurallara uymalıdır. Bu HWND içinde WPF kodu, genel WPF API 'Lerinin desteklediği her şeyi yapabilir. Ancak, masaüstündeki diğer HWND NDS ile etkileşimler için, WPF 'nin Win32 işleme ve işleme kuralları tarafından tümleşik olması gerekir. WPF, Win32 API 'Leri kullanarak dikdörtgen olmayan pencereleri destekler — dikdörtgen olmayan pencereler için HRGNs ve piksel başına Alfa için katmanlı pencereler.
Sabit Alfa ve renk anahtarları desteklenmez. Win32 katmanlı pencere özellikleri platforma göre farklılık gösterir.
Katmanlı pencereler, penceredeki her piksele uygulanacak bir alfa değeri belirterek tüm pencereyi yarı saydam (yarı saydam) yapabilir. (Win32, piksel başına Alfa 'yi destekler, ancak bu modda iletişim kutuları ve açılan bileşenler dahil olmak üzere herhangi bir alt HWND çizmeniz gerekir.
WPF, HRGNs; destekler Ancak, bu işlev için yönetilen API yok. Platform Invoke ' i ve HwndSource Ilgili Win32 API 'lerini çağırmak için kullanabilirsiniz. Daha fazla bilgi için bkz. yönetilen koddan yerel Işlevleri çağırma.
WPF katmanlı pencerelerin farklı işletim sistemlerinde farklı özellikleri vardır. Bunun nedeni WPF 'in işlemek için DirectX 'i kullanması ve katmanlı pencerelerin öncelikle DirectX işleme değil GDI işlemesi için tasarlanmıştı.
WPF, donanım hızlandırmalı katmanlı pencereleri destekler.
WPF, özellikle işleme donanım hızlandırılmasıyla istenen tam rengi işlemeyi garanti edebildiğinden, saydamlık renk tuşlarını desteklemez.