Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога

Введение в WPF, часть 2

Что нового? Основные факты.

Векторный принцип воспроизведения изображения на экране. Доступно также воспроизведение трехмерных сцен и отображение растров. Для формирования изображенния на экране используется так называемый graphics retained mode. То есть изображение на экране формируется не при помощи процедурной раскраски пикселов в методах типа OnPaint, а при помощи обработки движком среды данных о векторных и трехмерных примитивах в памяти. Такой подход очень похож на тот, который используется в программировании интерактивной трехмерной графики: прикладной программист задает систему вложенных графических объектов в памяти декларативным или процедурным способом, а графический конвейер производит растеризацию, то есть отображает то, что видно через камеру на экране. Следует учесть, что растеризация производится при помощи Direct3D, то есть с использованием доступных в системе средств аппаратного графического ускорения. Так как все элементы управления созданы методом композиции векторных графических примитивов, то становятся легко реализуемыми интересные эффекты масштабирования и свободных векторных трансформаций отдельных элементов управления, различных группирующих панелей и целых рабочих пространств.

Приложения на базе WPF делятся для две целевые группы – традиционные настольные и Web-based. Web-based отличаются от первых более низкими доступными привилегиями безопасности во время выполнения, отсутствием необходимости инсталляции приложения, и специальным странично-ориентированным (похожим на Web) механизмом навигации. Web-based приложения напоминают апплеты Java, но с отсутсвием заявлений со стороны Microsoft о их переносимости. Для запуска браузер-ориентированных приложений на целевой машине необходимо присутствие .NET Framework 3.0

Активное использование декларативных методов программирования. Разметка осуществляется при помощи использования формата XAML (Extensible Application Markup Language), спецификация которого является расширением спецификации XML. Использование XAML обусловлено несколькими причинами. Во-первых, есть смысл описывать при помощи XAML те вещи, для которых это является логичным и выгодным (например, разметка элементов управления, описание векторного и трехмерного графического материала, элементы data binding, и так далее). Выгоды от применения XAML в контексте средств разработки я опишу отдельным пунктом. После приобретения некоторого опыта работы со средой, способ мышления перестраивается на более «декларативный». Похожие вещи я наблюдал, когда начал активно применять шаблоны языка С++. Для создания WPF – приложения не обязательно использовать XAML. XAML является лишь верхним вспомогательным слоем управляемого API WPF. То есть к любой функциональности среды можно получить доступ процедурным способом.

XAML дает большие возможности для разработчиков инструментальных средств. Из-за наличия жесткой открытой спецификации формата XAML, сторонние разработчики могут создавать конкурирующие инструментальные средства (GUI Designers, Graphics Designers и т.д.). Уже сейчас на рынке имеются несколько таких коммерческих продуктов. Официальными инструментальными средствами для обработки XAML от Microsoft являются продукт под кодовым названием Orcas, который предоставляет функциональность GUI Designer в форме расширения для Visual Studio 2005 и системы под названием Expression Interactive Designer, которая является GUI Designer и Graphic Designer одновременно. Первый продукт предназначен для программистов, а второй в большей степени для графических дизайнеров соответственно. Примечательно то, что Expression Interactive Designer создан по технологии WPF и является функционирующим примером довольно большого приложения.

WPF предлагает разработчикам новую модель создания элементов управления. В отличие от «замкнутых в себе» элементов управления MFC и Windows Forms c прошитым внутри кодом пиксельной отрисовки, WPF предлагает элементы управления, созданные по принципам открытости и расширяемости. К любому стандартному элементу управления WPF можно применить стили и шаблоны. Стили являются некоторым аналогом CSS: они позволяют декларативно, централизованно, основываясь на типе целевого элемента, с учетом наследования, устанавливать значения различных свойств визуальных элементов. Шаблоны позволяют в значительной степени изменить стандартный внешний вид и поведение визуальных элементов декларативными способами.

Стандартная библиотека элементов управления содержит достаточный набор средств для организации GUI, но все же заметно, что Microsoft как обычно оставляет большую нишу на рынке для сторонних разработчиков библиотек элементов управления. Я думаю, что из-за вступления в силу новой архитектурной парадигмы для разработчиков элементов управления рынок сторонних библиотек для WPF будет качественно отличаться от подобных рынков для Windows Forms и MFC. Скорее всего, в эточ бизнесе большую роль приобретут графические дизайнеры.

Использование XAML, инструментальных средств, Retained mode graphics и механизмов расширения элементов управления дает возможность более структурировано организовать процесс разработки presentation layer приложений. Таким образом, дизайнер может «нарисовать» общий вид приложения при помощи XAML, а программист затем занимается несложной адаптацией такого макета к работающему приложению. Этим поток работ над оригинально выглядяшими приложениями WPF схож с деятельностью по разработке традиционных веб-сайтов (но с отсутсвием механических проблем с нарезкой, версткой и поддержкой переносимости).

Разработчики ввели в состав WPF достаточно обширную функциональность поддержки отображения и обработки различных документов. Теперь не нужно использовать ActiveX компонент веб-браузера или стандартный RichTextBox для отображения сложного отформатированного документа с разными встроенными объектами. Для этого в WPF существуют входящие в стандартную поставку элементы управления. В этом контексте Microsoft предлагает для использования новый универсальный основанный на XML формат XPS (XML Paper Specification). Кроме жестко специфицированного общего открытого формата документов (в замену достаточно ущербному на мой взгляд двоичному RTF и тяжеловесному PDF), спецификация XPS предоставляет возможности автоматической архивации и передачи таких документов, и продвинутую систему печати твердых копий, которая будет доступна в Windows Vista. Насколько я знаю, приложения из пакета Office 2007 могут экспортировать свои данные в формат XPS.

Существует так же встроенная поддержка анимации (изменения в зависимости от разных факторов) практически любых свойств визуальных объектов. Такая анимация может быть задана в XAML декларативно.

Хорошо поддерживаются встраиваемые в документы XAML (потоковые) видео и аудио данные.

Выше я перечислил краткий список основных, «видимых извне» новаторских возможностей WPF. В следующем постинге я попытаюсь рассказать больше о возможностях для программистов и высокоуровневой архитектуре среды.

Опубліковані Wednesday, October 18, 2006 6:08 PM від EugeneZ
Помічено як:

Коментарі

# re: Введение в WPF, часть 2

"Векторный принцип воспроизведения изображения на экране" - а можно поподробней плиз!

P.S. Быть пионером в новых технологиях и описывать их для других - сложная и неблагодарная работа. Мой респект Вам!

Monday, October 30, 2006 11:20 AM by Pro100Oleh

# re: Введение в WPF, часть 2

To Pro100Oleh:

Спасибо.

Насчет векторно-трехмерного воспроизведения я попытался написать сжато в первом абзаце. Если Вам интересно узнать более подробно об этом, то Вас ждут книги и документация по WPF :) Или может быть Вы хотели спросить что-то конкретное?

Monday, October 30, 2006 2:20 PM by EugeneZ

# re: Введение в WPF, часть 2

По поводу векторно-трехмерного воспроизведения: интересна самая идея. Что я как программист от этого получу, что нового смогу выводить, а что уже не смогу. Кто занимается обработкой полигонов, а кто построением результируещего изображения? Означает ли это, что на фреймворке я могу сделать приложение полностью на своих контролах и оно не будет тормозить, или лутче писать это на сях? Кстати, а на с++ можно будет все это использовать, или мы явно привязываемяя к фреймворку?

А в Vista как все сделано - уже все на новых технологиях?

Tuesday, October 31, 2006 9:25 AM by Pro100Oleh

# re: Введение в WPF, часть 2

1. Как программист Вы получите возможность формировать изображение на экране, используя технику композиции описаний векторных примитивов в памяти, а не закраски матрицы пикселов по запросу ОС. Из этого исходят очень многие многие сильные стороны WPF (например, открытая модель элементов управления и шаблоны). Плюс вы имеете возможнось применять все возможности векторных трансформаций, анимации, сглаживания и так далее. Это не упоминая совершенно нового внешнего вида приложений для пользователей.

2. Воспроизведением графики занимается единственный неуправляемый компонент WPF milcore.dll, работа котороого базируется на DirectX.

3. Вы можете сделать приложение полностью на своих контролах, и вполне возможно что оно не будет тормозить :)

4. Невозможно получить доступ к API WPF из неуправляемых языков.

5. В Vista практически не исполььзуются компоненты, написанные на .NET, и дело тут не в WPF. Скорее всего, основные причины - это большое количества неуправляемого кода, который нерентабельно переписывать, плюс низкая производительность .NET на low-end системах.

Wednesday, November 01, 2006 12:28 AM by EugeneZ
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.