• Nie Znaleziono Wyników

FoundationWPF Presentation Windows

N/A
N/A
Protected

Academic year: 2021

Share "FoundationWPF Presentation Windows"

Copied!
23
0
0

Pełen tekst

(1)

Presentation Foundation

WPF

(2)

Programowanie w środowisku Windows

Założenia WPF

Platforma z bogatymi możliwościami prezentacji

Programowalna platforma

Możliwość określania zachowania i wyglądu na poziomie deklaratywnym

Integracja interfejsu użytkownika, dokumentów i multimediów

Wykorzystanie najlepszych cech środowiska WWW i środowiska systemu Windows

Integracja programistów i grafików

(3)

– W Microsoft powstaje zespół, którego zadaniem ma byd stworzenie nowej platformy prezentacji, która mogłaby zastąpid User32/GDI32, Visual Basic, DHTML i Windows Forms

• 2003

– Projekt o nazwie Avalon zostaje ogłoszony na konferencji PDC

• 2006

– Premiera WPF jako części składowej .NET Framework 3.0 – VS 2005 Extensions for .NET 3.0 (CTP)

• 2007

– WPF wbudowany w Windows Vista – .NET Framework 3.5

– Expression Blend 1.0

– VS 2008 & VS WPF Designer

• 2008

– WPF 3.5 SP1 (jako częśd .NET 3.5 SP1)

• 2010

– WPF 4 (.NET 4.0)

• 2012

(4)

Programowanie w środowisku Windows

Obsługiwane wersje Windows

WPF wraz z .NET Framework jest wbudowany w:

Windows Vista, Windows 7, Windows 8

Windows Server 2008

WPF można zainstalować wraz z .NET Framework 3.x (w szczególności 3.5 SP1) na:

Windows XP SP2

Windows Server 2003

(5)

Najważniejsze cechy WPF

Usługi graficzne w całości oparte o Direct3D

zaawansowane możliwości graficzne

wykorzystanie GPU (Graphics Processing Unit) z karty graficznej

grafika wektorowa skalowalna bez straty jakości

renderowanie scen trójwymiarowych

Współpraca z poprzednimi rozwiązaniami

WPF i Win32 mogą wykorzystywać się wzajemnie

WPF może wykorzystywać kontrolki Windows Forms (WindowsFormsHost)

Windows Forms może wykorzystywać elementy WPF (ElementHost)

Adnotacje - możliwość tworzenia, przechowywania i zarządzania w obrębie dokumentów

(6)

Programowanie w środowisku Windows

Najważniejsze cechy WPF c.d.

Usługi multimedialne

grafika 2D z wbudowanymi zestawami pędzli, piór, geometrii i transformacji

możliwości grafiki 3D jako podzbiór pełnego zestawu Direct3D

obsługa większości popularnych formatów obrazów

obsługa Windows Imaging Component pozwalającego na pisanie kodeków

obsługa filmów WMF, MPEG i niektórych AVI

obsługa kodeków Windows Media Player

Animacje

animacje oparte na upływie czasu

animacje mogą być uruchamiane w reakcji na zdarzenia, włączając w to akcje użytkownika

efekty animacji mogą być definiowane dla poszczególnych obiektów

zestaw predefiniowanych efektów animacji

(7)

Najważniejsze cechy WPF c.d.

Wiązanie danych

3 typy wiązań danych:

One time: klient ignoruje modyfikacje danych

One way: klient ma dostęp tylko do odczytu danych

Two way: klient może odczytać i zmodyfikować dane

także wyrażenia LINQ mogą być używane jako źródła danych

Interfejs użytkownika

zestaw wbudowanych kontrolek

modyfikowalne wzorce kontrolek (wygląd i zachowanie kontrolek)

aplikacja nie troszczy się o odrysowanie swojej zawartości

Dokumenty

obsługa dokumentów XPS (XML Paper Specification)

obsługa stronicowanych dokumentów z wykorzystaniem Open Packaging Convention

(8)

Programowanie w środowisku Windows

Najważniejsze cechy WPF c.d.

Tekst

obsługa fontów OpenType, TrueType i OpenType CFF

obsługa Unicode

wbudowane cechy: sprawdzanie poprawności, automatyczne rozmieszczenie linii tekstu, podziały linii zależne od języka, dzielenie słów, wyrównywanie tekstu, efekty i transformacje graficzne (np. cienie, rozmycie, poświata, obrót, pochylenie itp.)

obsługa animacji w tekstach (zarówno w definicji znaków jak i w pozycji, rozmiarze, kolorze i przezroczystości całości tekstu)

Dostęp dla osób z upośledzeniami

Microsoft UI Automation

(9)

Architektura

PresentationFramework

elementy prezentacji widoczne dla użytkownika (układ elementów, animacje, wiązanie danych i inne)

PresentationCore

wrapper dla MIL

implementuje podstawowe usługi

milcore – Media Integration Layer

bezpośrednio stykający się z DirectX

komponent natywny

(10)

Programowanie w środowisku Windows

Podstawowe klasy

Lecture 7 - 33

http://windowsclient.net

(11)

System.Threading.DispatcherObject

Większość klas WPF dziedziczy z klasy DispatcherObject

Ta klasa daje obsługę współbieżności i wielowątkowości

WPF jest oparte o system komunikatów

dla wywołań pomiędzy wątkami wykorzystywane są komunikaty User32

Wszystkie aplikacje WPF uruchamiane są z dwoma wątkami – jednym obsługującym interfejs użytkownika i drugim

obsługującym renderowanie i rysowanie

(12)

Programowanie w środowisku Windows

System.Windows.DependencyObject

Jednym z podstawowych założeń było wykorzystanie właściwości zamiast metod i zdarzeń

właściwości są deklaratywne, pozwalają na określanie celów zamiast akcji

System właściwości zawarty w WPF jest bogatszy niż w CLR i jest oparty na klasie DependencyObject

System właściwości WPF obsługuje powiadomienia o zmianie wartości

(13)

System.Windows.Media.Visual

Klasa Visual pozwala na budowanie drzewa obiektów wizualnych, tzn. obiektów mogących zawierać instrukcje rysowania i metadane informujące w jaki sposób te

instrukcje mają być wykonywane (np. transformacje)

Ta klasa jest miejscem styku dwóch podsystemów – zarządzanego API i natywnego milcore

WPF wyświetla dane wykorzystując niezarządzane struktury danych obsługiwane przez milcore

Całe drzewo elementów wizualnych i instrukcji rysujących może być trzymane w pamięci podręcznej

Komponenty są rysowane "od tyłu", co pozwala na przezroczystość elementów

nie jest wykorzystywane obcinanie

(14)

Programowanie w środowisku Windows

System.Windows.UIElement

Klasa UIElement definiuje podstawowe podsystemy WPF, m.in. układ elementów, wejście od użytkownika i zdarzenia

Układ elementów jest podstawowym pojęciem w WPF

na poziomie UIElement obsługiwany jest model dwóch faz układu – ustalenia rozmiaru i położenia elementów

Wejście od użytkownika pochodzi ze sterowników urządzeń

jest przesyłane do odpowiedniego procesu i wątku za pośrednictwem User32

w momencie otrzymania go przez aplikację WPF jest konwertowany to formatu WPF i wysyłany do obiektu dispatchera

WPF pozwala na to, by na podstawie jednego otrzymanego sygnału było wywoływanych wiele zdarzeń

(15)

System.Windows.FrameworkElement

Klasa umożliwiająca dostosowanie elementów do własnych potrzeb

jej głównym zadaniem jest umożliwienie dowolności układu elementów w aplikacji

Wprowadza dwa nowe podsystemy:

wiązanie danych pozwala na powiązanie właściwości do danych

WPF pozwala na wiązanie właściwości, transformacje i wiązanie danych w postaci listy

wzorce danych pozwalają na deklaratywne określenie sposobu wizualizacji danych

style (to także forma wiązania danych)

pozwalają na powiązanie zbioru właściwości elementu z definicją wyglądu podaną dla klasy tego elementu

(16)

Programowanie w środowisku Windows

System.Windows.Controls.Control

Najbardziej znaczącą cechą klasy Control jest możliwość stosowania wzorców

wzorce pozwalają na określenie sposobu wizualizacji kontrolki w deklaratywny, opcjonalnie sparametryzowany sposób

Content model

dla przykładu zawartością przycisku może być zwykły tekst, złożony obiekt lub nawet drzewo elementów

wzorzec danych jest wykorzystywany podczas wizualizacji kontrolki

(17)

XAML

Extensible Application Markup Language (XAML) językiem znaczników ( markup language ) umożliwiającym

programowanie deklaratywne

programista lub grafik jest w stanie określić zachowanie, wygląd i integrację elementów bez konieczności

programowania strukturalnego

Pozwala na oddzielenie modelu od widoku

Chociaż możliwe jest zaprogramowanie całości np. w C#

Kod napisany w XAML może być skompilowany do

zarządzanego assembly w taki sam sposób jak w przypadku innych języków .NET Framework

Wykorzystanie XAML nie jest ograniczone do WPF, chociaż

został wprowadzony jako część składowa

(18)

Programowanie w środowisku Windows

Przykłady kodu XAML

Lecture 7 - 41

<Application x:Class="WpfApp.App"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

StartupUri="Window1.xaml">

<Application.Resources>

</Application.Resources>

</Application>

<Window x:Class="WpfApp.Window1"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" Height="300" Width="300">

<Grid>

</Grid>

</Window>

(19)

Przestrzenie nazw XAML

Przestrzenie nazw XML są deklarowane w postaci atrybutów

atrybuty mogą być umieszczone w dowolnym elemencie XML

rozpoczynającym tag, ale zwykle są w pierwszym tagu w dokumencie

zadeklarowana przestrzeń nazw może być użyta w dowolnym miejscu dokumentu

XAML wykorzystuje dwie podstawowe przestrzenie nazw:

http://schemas.microsoft.com/winfx/2006/xaml

zawiera różne pomocnicze cechy XAML

domyślnie jest zmapowana do prefiksu x, który może być wykorzystany przy odwołaniu do elementu tej przestrzeni (<x:ElementName>)

http://schemas.microsoft.com/winfx/2006/xaml/presentation

zawiera wszystkie klasy WPF

jest domyślną przestrzenią nazw definiowaną bez prefiksu

(20)

Programowanie w środowisku Windows

Klasa Application

Obiekt Application jest odpowiedzialny za zarządzanie całością aplikacji, włączając w to jej stan, utworzone okna (lub strony) i zasoby

Początkiem aplikacji jest wywołanie metody Run

using System;

using System.Windows;

namespace WpfApplication1 { static class Program {

[STAThread]

static void Main() {

Application app = new Application();

Window w = new Window();

w.Title = "Hello World";

w.Show();

app.Run();

} } }

(21)

Cykl życia aplikacji

1.

Tworzony jest obiekt klasy Application

2.

Wywoływana jest metoda Run

3.

Zgłaszane jest zdarzenie Application.Startup

obsługa tego zdarzenia jest najlepszym miejscem na inicjalizację aplikacji

4.

Tworzone i używane są okna (lub strony)

5.

Wywoływana jest metoda Application.Shutdown

6.

Zgłaszane jest zdarzenie Application.Exit

7.

Metoda Run kończy swoje działanie

(22)

Programowanie w środowisku Windows

Obsługa błędów

Zdarzenie Application.DispatcherUnhandledException jest wywoływane dla każdego nieprzechwyconego wyjątku

Flaga DispatcherUnhandledExceptionEventArgs.Handled oznacza, że wyjątek może być zignorowany i aplikacja może kontynuować pracę

<Application [...]

DispatcherUnhandledException="App_UnhandledException">

</Application>

public partial class App : Application {

private void App_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { using (StreamWriter errorLog =

new StreamWriter("c:\\error.log", true)) {

errorLog.WriteLine("Error @ " + DateTime.Now.ToString());

errorLog.WriteLine(e.Exception.ToString());

}

e.Handled = true;

(23)

Stan aplikacji

Obiekt aplikacji jest dostępny jako statyczna właściwość Application.Current

Właściwość Application.Properties udostępnia słownik, w którym mogą być przechowywane dowolne dane

object lastError = Application.Current.Properties["LastError"];

if (lastError != null &&

lastError is DivideByZeroException) { }

Application.Current.Properties["LastError"] = e.Exception;

Cytaty

Powiązane dokumenty

Projektowanie przedmiotowego systemu oraz analiza łańcucha dostaw węgla stwarza warunki dla dalszej ekspansji spółek; zmusza jednocześnie ich zarządy do przeprowadzania

Przypomnij dowód twierdzenia Banacha o odwzorowaniu otwartym w ujęciu Pytlika (Analiza funk- cjonalna, str 89-90).. Zauważ, że podana argumentacja zachowuje ważność, gdy

[r]

The proof of the above inequalities is not elementary and is based on the first 25 000 zeros of the Riemann function ξ(s) obtained by D... Computer checking for n &lt; 36 also

Krych, Skrypt dla sudent´ow ekonomii: Pochodne wy˙zszych rze , d´ow,

[r]

Stosuje się także test znaków, zakładamy wtedy, że badana cecha ma rozkład ciągły w otoczeniu mediany. Tak postawione zadanie polega na estymacji funkcji, a nie liczby

[r]