Главная » WPF » Визуальные элементы WPF

0

Обсуждая  концепции Windows Presentation Foundation, мы рассмотрели при ложения  и способы построения  пользовательских интерфейсов из элементов  уп равления,  а также применение менеджеров  размещения для позиционирования элементов.  Наша  следующая  тема – внутреннее  устройство  элементов  управле ния. Точнее нас будет интересовать,  как создаются их визуальные образы. Ведь в конечном  итоге любой элемент  управления сводится  к набору визуальных эле ментов, которые выводят  на экран пиксели.

В основу разработки  WPF положен фундаментальный принцип  интеграции. Мы хотели  создать единый  комплект  технологий,  позволяющий решать широ кий спектр задач: от традиционных пользовательских интерфейсов до докумен тов и мультимедиа.  Упомянутый принцип  красной  нитью проходит  через весь комплект, но особенно наглядно  проявляется на уровне визуализации. Эту гла ву мы начнем с рассмотрения двумерной графики, а затем перейдем и к трехмер ной. Познакомившись с основами,  мы займемся  изучением  документов,  вклю чая базовый текст, типографические аспекты и поток текста. Разобравшись с фундаментальными способами  вывода пикселей  (для  визуализации двумерной и трехмерной  графики  и текста), мы сможем поговорить  об анимации  – способе оживить  визуальные элементы.  И последним  пунктом  этого путешествия будет область мультимедиа,  в которой интересно сочетаются двумерная графика и анимация.

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

В WPF есть три уровня двумерной графики: фигуры, рисунки  и команды ри сования. Команды  рисования – это низкоуровневые инструкции системе компо зиции, рисунки  – тонкая  обертка вокруг команд рисования,  а фигуры  – готовые элементы, представляющие конкретные рисунки. Иными словами, рисунки – это объектно  ориентированное представление команд рисования,  а фигуры  наделя ют рисунки идентичностью,  интерактивностью и стилями. Все двумерные опера ции сводятся к геометрическим примитивам, кисти и перу. Геометрия описывает форму фигуры,  кисть служит  для закрашивания внутренней  области, а перо оп ределяет  линию,  которой  проводится  граница.  Вот четыре  основных  геометри ческих примитива: линия, прямоугольник, эллипс и путь (рис. 5.1). Самым слож ным является путь; он позволяет  описать  произвольный контур,  состоящий  из прямых и кривых линий. С помощью пути можно описать и любой из прочих ге ометрических  примитивов.

Принципы двумерной графики

В основу всех слоев системы композиции положен единый набор принципов. В такой системе, как WPF,  где высокоуровневые слои (например, элементы  уп равления) напрямую  опираются  на слои нижних уровней, эти принципы нагляд но проявляются на верхнем уровне.

Композитный рендеринг

В любом графическом ядре есть два способа реализовать кооперативный ренде ринг: отсечение и композиция. Библиотека GDI, а еще раньше User32 базировалась на системе отсечения. Каждому  элементу  выделялась прямоугольная область,  в которой  только  и осуществлялось рисование.  Отсечение  позволяло оптимизиро вать производительность, главным образом, потому что любой элемент можно бы ло нарисовать, почти ничего не зная о других элементах. Когда операционная сис тема Windows только создавалась,  эта оптимизация была критически важна – лю бое окно можно было нарисовать, не перерисовывая все остальные окна.

Рис. 5.1. Четыре основных графических примитива

С другой стороны, композитная система позволяет  рисовать элементы поверх друг друга. В случае GDI/User32 такого эффекта  можно было отчасти добиться с помощью флага CS_PARENTDC. Вместо того чтобы производить отсечение для команд рендеринга,  мы выполняем операции  рисования,  начиная  с самого ниж него элемента, поэтому элементы  с меньшими  значениями z индекса перекрыва ются более «близкими». Это позволяет  без труда реализовывать, например,  по лупрозрачность и непрямоугольные элементы.

В WPF для всех элементов реализована композитная система рендеринга. Од

нако на самом верхнем уровне необходимо создать окно в смысле User32, которое могло бы взаимодействовать с другими частями операционной системы. Компо

зицию можно до некоторой  степени поддержать  за счет описанного  выше меха низма уровней окон, предоставляемого ОС. Кстати, в Windows Vista он сущест венно усовершенствован.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии