2. Історія створення
Базові технології більшості інтерфейсів в Windows -
інтерфейс графічного пристрою (GDI) і підсистема
USER - з'явилися в Windows 1.0 ще в 1985 році.
На початку 1990-х років компанія Silicon Graphics
розробила популярну графічну бібліотеку OpenGL
для двовимірної і тривимірної графіки як в
Windows, так і в інших системах.
Технологія Microsoft DirectX, представлена в 1995
році забезпечує високошвидкісну альтернативу для
2D-графіки, введення, мережевої взаємодії, роботи
зі звуком, а з часом і 3D-графіки (яка стала
можливою з версією DirectX 2, що вийшла в 1996
році).
Andrey Gladky
KspDevelop@gmail.com 2
3. Історія створення
Згодом і в GDI, і в DirectX було внесено багато
суттєвих поліпшень. Наприклад, технологія GDI+,
представлена в Windows ХР, додала підтримку
прозорості та градієнтні кисті.
Однак зважаючи на велику складність і в відсутність
апаратного прискорення вона працює повільніше,
ніж GDI. Що стосується технології DirectX, то
постійно виходять нові версії, що розсовують межі
можливостей комп'ютерної графіки.
Andrey Gladky
KspDevelop@gmail.com 3
4. Історія створення
Після появи каркаса .NET і керованого коду (у 2002
році) розробники отримали дуже продуктивну
модель для створення Windows і веб-додатків.
Включена в неї технологія WindowsForms
(заснована на GDI+) стала основним способом
створення користувацьких інтерфейсів в Windows
для розробників на С#, Visual Basic і (меншою
мірою) С++. Вона користувалася успіхом і
виявилася вельми продуктивною, але мала
фундаментальні обмеження, що йдуть коренями в
GDI+ і підсистему USER.
Починаючи з версії DirectX9 Microsoft стала
поставляти цю систему для керованого коду, яка
згодом була замінена каркасом XNA Framework.
Andrey Gladky
KspDevelop@gmail.com 4
5. Історія створення
Корпорація Microsoft розуміла, що потрібно щось нове
вільне від обмежень GDI+ і підсистеми USER, але не
менш продуктивне і зручне в використанні, ніж
Windows Forms. Із врахуванням зростання
популярності кроссплатформенних додатків,
заснованих на HTML і JavaScript, Windows
потребувала настільки ж простої технології, яка при
цьому дозволяла б задіяти всі можливості локального
комп'ютера. І Windows Presentation Foundation (WPF)
в 2005 дала в руки розробників ПЗ і графічних
дизайнерів той інструмент, який був необхідний для
створення сучасних рішень і не вимагав освоєння
відразу декількох складних технологій.
Andrey Gladky
KspDevelop@gmail.com 5
7. Широка інтеграція
Підтримка композиції і візуалізації різнорідних
елементів.
Використовувати одночасно ЗD-графіку, відео, мова
і відформатовані документи на додаток до звичайної
двовимірної графіки і елементів управління.
Одні й ті ж ефекти застосовні до різних видів
мультимедійної інформації, а один раз освоєна
техніка може використовуватися і для інших цілей.
Andrey Gladky
KspDevelop@gmail.com 7
8. Незалежність від роздільної здатності
WPF забезпечує і дає можливість зменшувати або
збільшувати елементи на екрані незалежно від його
роздільної здатності. Це стало можливим завдяки тому,
що WPF заснована на використанні векторної
графіки.
Andrey Gladky
KspDevelop@gmail.com 8
9. Апаратне прискорення
Оскільки WPF заснована на технології DirectX, то
весь вміст в WPF-додатку, будь то двовимірна або
тривимірна графіка, зображення або текст,
перетвориться в тривимірні трикутники, текстури та
інші об'єкти Direct3D, а потім промальовуються
апаратно-графічною підсистемою комп'ютера.
Але WPF не вимагає обов'язкової наявності
високопродуктивної графічної апаратури. У ній є і
власний програмний конвеєр візуалізації.
Andrey Gladky
KspDevelop@gmail.com 9
10. Декларативне програмування
В WPF застосування декларативного програмування
вийшло на новий рівень завдяки мові XAML
(extensible Application Markup Language -
розширювана мова розмітки додатків)
(вимовляється «замл»). Поєднання WPF і XAML
аналогічно використанню HTML для опису
користувацького інтерфейсу, але з набагато більш
широкими виразними можливостями.
У WPF мова XAML застосовується в якості формату
документів, для представлення 3D-моделей і багато
чого іншого. У результаті дизайнер може
безпосередньо впливати на зовнішній вигляд
програми і деякі особливості його поведінки; раніше
для цього, як правило, доводилося писати код.
Andrey Gladky
KspDevelop@gmail.com 10
11. Багаті можливості композиції і
налаштування
У WPF елементи управління можуть поєднуватися
немислимими раніше способами. Можна створити
комбінований список, що містить анімовані кнопки,
або меню, складається з відео кліпів. Для оформлення
елемента способом, про який його автор і не
подумував, не знадобиться писати ніякий код (і в
цьому корінна відмінність від попередніх технологій,
де рисування елементів жорстко задавалася
розробником коду).
Andrey Gladky
KspDevelop@gmail.com 11
13. Архітектура WPF
PresentationFramework.dll містить типи WPF
верхнього рівня, включаючи ті, що представляють
вікна, панелі та інші види елементів управління.
Більшість класів, які ви будете використовувати,
знаходяться безпосередньо в цій збірці.
PresentationCore.dll містить базові типи, такі як
UIElement і Visual, від яких успадковані всі фігури і
елементи управління.
WindowsBase.dll містить ще більш базові
інгредієнти, які потенційно можуть застосовуватися
поза WPF.
Andrey Gladky
KspDevelop@gmail.com 13
14. Архітектура WPF
milcore.dll - ядро системи візуалізації WPF і
фундамент рівня медіа-інтеграції (Media Integration
Layer - MIL). Він транслює візуальні елементи в
трикутники і текстури, яких очікує Direct3D.
Хоча milcore.dll вважається частиною WPF, це також
найважливіший компонент операційних систем
Windows Vista і Windows 7. У дійсності DWM
(Desktop Window Manager) використовує milcore.dll
для відображення робочого стола.
Andrey Gladky
KspDevelop@gmail.com 14
15. Архітектура WPF
WindowsCodecs.dll -нізкоуровневий API-інтерфейс,
що забезпечує підтримку зображень (наприклад,
обробку, відображення і масштабування растрових
зображень і файлів JPEG).
Direct3D - низькорівневий API-інтерфейс, через
який візуалізується вся графіка в WPF.
User32 використовується для визначення того, яке
місце на екрані до якої програми відноситься.
Andrey Gladky
KspDevelop@gmail.com 15
16. Огляд XAML
Кожен елемент в документі XAML відображається
на екземпляр класу .NET. Ім'я елемента в точності
відповідає імені класу.
Як і будь-який XML-документ, код XAML допускає
вкладення одного елемента всередину іншого.
XAML надає кожному класу гнучкість у прийнятті
рішення щодо того, як впоратися з такою ситуацією.
Властивості кожного класу можна встановлювати
через атрибути.
Andrey Gladky
KspDevelop@gmail.com 16