poniedziałek, 5 października 2009

Wstęp teoretyczny do WPF

Na początek naszej przygody z WPF, przyjrzyjmy się budowie silnika samego środowiska.
Jak już wspomniane było wcześniej, WPF korzysta z możliwości drzemiących we współczesnych kartach graficznych. Jak sprawdzić czy nasza karta graficzna obsługuje wszystkie cuda nowej technologi? Wystarczy sprawdzić tzw. obsługiwaną warstwę.

Pojęcie Warstw
WPF podczas komunikacji z kartą graficzną, jest w stanie sprawdzić jej możliwości i na tej podstawie przydzielić jej jedną z trzech warstw:
Warstwa 0 – karta nie posiada akceleracji. DirectX 7.0 lub niższy
Warstwa 1 – karta może przejąć część operacji na siebie. DirectX >7.0 i <9.0.
Warstwa 2 – karta posiada pełną akcelerację. DirectX >= 9.0

Jak sprawdzić jakiej warstwie odpowiada nasza karta graficzna i ewentualnie przygotować odpowiednie instrukcje dla użytkowników nie posiadających najnowszych urządzeń?
Łatwo można to osiągnąć w sposób:
int tier = (RenderCapability.Tier >> 16);
Przesunąć należy, gdyż pozostałe bity w przyszłości mogą zostać przeznaczone na sub warstwy.

Architektura WPF
Cała architektura WPF została napisana w kodzie zarządzanym poza biblioteką milcore.dll. Stało się tak, gdyż ona bezpośrednio odwołuje się do funkcji DirectX. Drugim powodem jest zapewnienie maksymalnej wydajności.
Patrząc na schemat przedstawiony na stronach MSDN, spróbuje scharakteryzować w dwóch trzech zdaniach najważniejszego jego elementy.
PresentationFramework.dll – przechowuje szeroko pojęte typy WPF jakimi np. są wszelkiego rodzaju kontrolki. Podczas codziennego programowania, właśnie z tej biblioteki będziemy korzystać najczęściej.
PresentationCore.dll – zawiera typy bazowe jak np. UIElement, z których dziedziczą wszystkie kształty i kontrolki.
Milcore.dll – biblioteka napisana w kodzie niezarządzanym. Zajmuje się interakcją z DirectX.

Ogólna hierarchia klas w WPF
 Postaram się teraz przybliżyć ogólną hierarchię klas:
 
Object – klasa bazowa dla wszystkich typów w .NET
DispatcherObject – dziedziczy z niego każdy wizualny element WPF. Zapewnia bezpieczeństwo podczas korzystania z wątków, oraz oferuje metody ułatwiające interakcję z wieloma wątkami.
Visual – najprościej ujmując, opisuje jak ma być malowany obiekt (przeźroczystość, transformacje itp.)
UIElement – nadzoruje takimi składnikami jak zdarzenia czy układ graficzny.
FrameworkElement – zawiera takie właściwości jak margines czy też ustawienie położenia w pionie i poziomie elementów
Control – wprowadza kolejne właściwości, ale najciekawszą opcją którą wprowadza jest pojęcie szablonów (templates) – dokładnie o nich będzie w późniejszym odcinku kursu

Brak komentarzy:

Prześlij komentarz