Windows Presentation Foundation (WPF) — система для построения клиентских приложений Windows

Содержание

Слайд 2

пользователем, возможностями графическая составе .NET взаимодействия с (презентационная) Framework (начиная подсистема

пользователем,

возможностями графическая составе .NET

взаимодействия с (презентационная) Framework (начиная

подсистема в с версии 3.0),

использующая язык XAML.

Базовые сведения

Слайд 3

Технология WPF существенно упрощает создание любых пользовательских интерфейсов. При этом интерфейс

Технология WPF существенно

упрощает

создание

любых пользовательских интерфейсов. При этом интерфейс может создаваться относительно независимо от

остального приложения, что позволяет дизайнерам гораздо эффективнее участвовать в процессе разработки приложения.

Преимущества WPF

Слайд 4

WPF предустановлена в Windows Vista, Windows 7, Windows 8. WPF предоставляет

WPF предустановлена в Windows Vista, Windows 7, Windows 8.

WPF предоставляет средства для визуального интерфейса,
язык XAML (Extensible Application

создания включая

Markup привязку

Language), элементы управления,
данных, макеты, двухмерную и трёхмерную

графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление.

Особенности WPF

Слайд 5

В основе WPF лежит векторная система визуализации, не зависящая от разрешения

В основе WPF

лежит

векторная

система

визуализации, не зависящая

от разрешения

устройства вывода

и созданная

с учётом графического

возможностей современного оборудования.

Графической технологией, лежащей в основе WPF, является DirectX, в

отличие от Windows Forms, где используется GDI/GDI+.
производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX

Особенности WPF

Слайд 6

Технологию Silverlight является подмножеством WPF и дополнительно включает несколько фундаментальных классов

Технологию Silverlight является подмножеством WPF
и дополнительно включает несколько

фундаментальных классов из
Framework (встроенные типы

каркаса данных,

.NET
классы

коллекций и т. д.).
Если требуется функциональность, которая существует только в

полной версии .NET, то рекомендуется использовать WPF. Если необходима возможность

выполнять устройствах,

приложение отличных

на компьютерах Мас или от стандартного ПК, то

используется Silverlight.
На любой платформе Silverlight обеспечивает единую технологию построения интерфейса.

Технология Silverlight и WPF

Слайд 7

WPF приложения начинается с положений Создание процедуры элементов задания размеров и

WPF приложения начинается с

положений

Создание процедуры элементов

задания размеров и управления (и других

элементов) –

компоновки или верстки макета.
В WPF имеется богатая инфраструктура

компоновки. В ее основе лежит механизм взаимодействия между элементами-родителями и их потомками.

Создание WPF-приложения

Слайд 8

Панели WPF WPF пять основных встроенных панелей (все в пространстве имен

Панели WPF

WPF пять основных встроенных панелей (все в пространстве имен System.Windows.Controls)

в порядке возрастания сложности (и полезности):
Canvas;
StackPanel;
WrapPanel;
DockPanel;
Grid.
Слайд 9

Виды панелей Canvas (холст) - самая простая панель. Использовать для организации

Виды панелей
Canvas (холст) - самая простая панель. Использовать для организации пользовательского

интерфейса не рекомендуется.
StackPanel последовательно размещает своих потомков в виде стопки.
Панель WrapPanel похожа на StackPanel, но при нехватке места для одной стопки создает новые строки или столбцы.
Панель DockPanel дает простой способ пристыковки элемента к одной из сторон, растягивая его на всю имеющуюся ширину или высоту.
Grid(сетка) - самая гибкая из всех панелей и, пожалуй, наиболее употребительная. В проектах VisualStudio и ExpressionBlend панель Grid используется по умолчанию. Она позволяет расположить дочерние элементы в несколько строк и несколько столбцов, не полагаясь на режим автоматического переноса.
Слайд 10

Свойства панелей

Свойства панелей

Слайд 11

Во всех классах, производных от FrameworkElement, есть свойства Height (высота) и

Во всех классах, производных от FrameworkElement, есть свойства Height (высота) и

Width (ширина) (типа double), а также MinHeight, MaxHeight, MinWidth и MaxWidth, которыми можно пользоваться для задания допустимых диапазонов значений. Все эти свойства можно задавать в любой комбинации как в процедурном коде, так и в XAML.

Свойства Height и Width

Слайд 12

Свойства Margin и Padding тоже связаны с размером элемента. Margin задает

Свойства Margin и Padding тоже связаны с размером элемента.
Margin задает внешнее

поле вокруг элемента, a Padding - внутренний отступ между содержимым элемента и его границами.
Результат установки разных свойств Margin и
Padding

Свойства Margin и Padding

Слайд 13

HorizontalAlignment и свойств элемент может избыточного управлять пространства, С помощью VerticalAlignment

HorizontalAlignment и

свойств
элемент может

избыточного

управлять пространства,

С помощью VerticalAlignment распределением выделенного ему

родителем. Значениями

являются одноименные перечисления,

свойств которые

определены в пространстве имен System.Windows:
HorizontalAlignment -

Left, Center, Right, Stretch
VerticalAlignment - Top, Center, Bottom, Stretch
Пример:

Выравнивание

Слайд 14

Применение преобразований В WPF имеется ряд встроенных классов двумерных геометрических преобразований

Применение преобразований

В WPF имеется ряд встроенных классов двумерных геометрических преобразований (производных

от System.Windows.Media.Transform), которые позволяют изменять размер и положение элементов независимо от ранее рассмотренных свойств.
Встроенные двумерные преобразования, определенные в пространстве имен System.Windows.Media:
RotateTransform;
ScaleTransform;
SkewTransform;
TranslateTransform;
MatrixTransform.
Слайд 15

RotateTransform ScaleTransform Примеры преобразований SkewTransform

RotateTransform

ScaleTransform

Примеры преобразований

SkewTransform

Слайд 16

важных Рассмотрим две инфраструктуры WPF составных части - маршрутизируемые события и команды. Маршрутизируемые события и команды

важных

Рассмотрим две инфраструктуры WPF

составных части
- маршрутизируемые

события и команды.

Маршрутизируемые события и команды

Слайд 17

Маршрутизируемые события Сгенерированное маршрутизируемое событие может распространяться вверх или вниз по

Маршрутизируемые события
Сгенерированное маршрутизируемое событие может распространяться вверх или вниз по визуальному

и логическому дереву, достигая каждого элемента простым и естественным образом без написания дополнительного кода.
Маршрутизация событий позволяет большинству приложений вообще не задумываться о наличии визуального дерева и является основой механизма композиции элементов в WPF.
События жестко связаны с деталями конкретных действий пользователя (например, нажатие кнопки или выбор элемента ListBoxItem из списка). Для различных устройств ввода определены свои события. Существуют события:
клавиатуры;
мыши;
стилуса.
Слайд 18

основных механизма команд основывается на трех особенностях: в WPF определено много

основных

механизма команд основывается на трех особенностях:
в WPF определено много встроенных команд;

в команды встроена автоматическая поддержка жестов ввода (например, сочетаний клавиш);
встроенное поведение некоторых элементов управления
WPF

уже ориентировано на те или иные команды.

Команды
В WPF существуют команды – это более абстрактная и слабо связанная версия событий. Команды представляют действия независимо от того, как они выглядят в пользовательском интерфейсе. Каноническими примерами служат команды Cut (Вырезать), Сору (Копировать) и Paste (Вставить). Мощь

Слайд 19

Элементы управления однодетных Есть три основных разновидности элементов управления: Кнопки Простые контейнеры Контейнеры с заголовками

Элементы управления

однодетных

Есть три основных разновидности элементов управления:
Кнопки
Простые контейнеры
Контейнеры с заголовками

Слайд 20

Примеры элементов управления

Примеры элементов управления

Слайд 21

Двумерная графика Основное отличие WPF от GDI - это то, что

Двумерная графика

Основное отличие WPF от GDI

- это

то, что в WPF

работающая

применяется полностью в

графическая система, режиме

запоминания,

а не

непосредственной визуализации.

В системе,

работающей в

режиме

запоминания,

можно

формулировать

высокоуровневые

указания,

например: «Помести

синий квадрат

размером

точку (0,0), -

и система

сама

запомнит и

10x10
будет

поддерживать это состояние. На самом деле это

означает: «Помести синий квадрат размером 10x10 в точку (0,0) и следи за тем, чтобы он там оставался». В дальнейшем нет необходимости возиться с недействительными областями и перерисовкой, а это экономит немало времени.
Слайд 22

Visual и Существует три типа данных: Shape. Drawing - это просто

Visual и

Существует три типа данных: Shape.
Drawing - это просто описания

кистями Brush

для заливки

Drawing,
путей и фигур с
и

ассоциированными контура.

Визуальное представление Visual — это один из способов нарисовать

объект Drawing на экране, но класс Visual открывает также возможность низкоуровневого и менее ресурсоемкого подхода к рисованию, позволяющего обходиться вообще без объектов Drawing.

Фигуры Shape - это предлагающие самый

готовые объекты простой (но и

Visual,
самый

ресурсоемкий) подход к рисованию на экране.

Двумерная графика

Слайд 23

Трехмерная графика (или ЗD-графика) полностью многие интегрирована в платформу WPF, встречающиеся

Трехмерная графика (или ЗD-графика)

полностью

многие

интегрирована в платформу WPF,
встречающиеся в ней концепции

пересекаются с

двумерной графикой и другими компонентами. Как и в случае двумерной графики,

возможности 3D доступны как из процедурного кода, так и из XAML- разметки. Чтобы отобразить в WPF трехмерную сцену, необходимо построить граф объектов. После того как сцена описана, система берет на себя ответственность за ее визуализацию и перерисовку в нужные моменты времени.

Трёхмерная графика

Слайд 24

создание по графики - двумерных изображений, Задача трехмерной трехмерным моделям которые

создание по

графики -
двумерных

изображений,

Задача трехмерной трехмерным моделям которые можно было

бы отобразить на некоем

устройстве вывода, например на экране монитора.
Хотя большинство ЗD-классов -

прямые обобщения двумерного API, есть два понятия, не имеющих аналогов в двумерном мире:
Материалы Material и источники света Light
Камеры Camera

Трёхмерная графика

Слайд 25

рисунке системы называют мировым пространством). На показаны двумерная и трехмерная координат,

рисунке системы

называют мировым пространством). На показаны двумерная и трехмерная координат, применяемые в WPF.

Камера
В WPF для управления тем,

что появится в объекте Viewport3D, необходимо поместить на 3D-сцену виртуальную камеру (объект Camera). Для этого следует позиционировать и ориентировать камеру в мировой системе координат (иногда для краткости ее
Слайд 26

трех основных объекты Light, являющиеся источниками света; объекты Material, то есть

трех основных

объекты Light, являющиеся источниками света;
объекты Material, то есть материалы, по-разному отражающие свет в камеру;
геометрия (Geometry) модели,

определяющая углы падения и отражения света.
Рассмотрим различные источники освещения, поддерживаемые WPF.

Освещение
Освещение складывается из компонентов:

Слайд 27

источник света, например удаленный Солнце. PointLight излучает свет (точечный источник) —

источник света, например

удаленный Солнце.
PointLight
излучает

свет

(точечный источник) —
всех

направлениях.

равномерно во Яркость света

увеличением

расстояния от

убывает с источника.

Класс PointLight аппроксимирует

света,

нефокусированные источники например электрические лампочки.

Виды источников света
DirectionalLight (направленный источник

света) — расположен в бесконечности, освещает сцену параллельными лучами света. Этот класс аппроксимирует
Слайд 28

Виды источников света SpotLight (прожектор) - испускает конус света. Яркость убывает

Виды источников света
SpotLight (прожектор) - испускает конус света. Яркость убывает с

увеличением расстояния от источника. Класс SpotLight аппроксимирует фокусированные источники света, например луч фонаря.
AmbientLight (рассеянный свет) — освещает все поверхности равномерно. Яркий источник рассеянного света создает плоские изображения из-за отсутствия теней. Однако не слишком яркий источник аппроксимирует эффект рассеянного освещения, созданного диффузно отражающими поверхностями на сцене.