Хотя работать с рисунками немного сложнее, чем с простыми фигурами, отделение графической композиции от графической визуализации делает типы, производные от Drawing
, гораздо более легковесными, чем производные от Shape
типы, одновременно сохраняя их ключевые службы.
Построение кисти DrawingBrush с использованием геометрических объектов
Ранее в главе элемент Path
заполнялся группой геометрических объектов примерно так:
Поступая подобным образом, вы достигаете интерактивности Path
при чрезвычайной легковесности, присущей геометрическим объектам. Однако если необходимо визуализировать аналогичный вывод и отсутствует потребность в любой (готовой) интерактивности, тогда тот же самый элемент
можно поместить внутрь DrawingBrush
:
При помещении группы геометрических объектов внутрь DrawingBrush
также понадобится установить объект Pen
, применяемый для рисования границ, потому что свойство Stroke
больше не наследуется от базового класса Shape
. Здесь был создан элемент Pen
с теми же настройками, которые использовались в значениях Stroke
и StrokeThickness
из предыдущего примера Path
.
Кроме того, поскольку свойство Fill
больше не наследуется от класса Shape
, нужно также применять синтаксис "элемент-свойство" для определения объекта кисти, предназначенного элементу DrawingGeometry
, со сплошным оранжевым цветом, как в предыдущих настройках Path
.
Рисование с помощью DrawingBrush
Теперь объект DrawingBrush
можно использовать для установки значения любого свойства, требующего объекта кисти. Например, после подготовки следующей разметки в редакторе Kaxaml с помощью синтаксиса "элемент-свойство" можно рисовать изображение по всей поверхности Page
:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Или же элемент DrawingBrush
можно применять для установки другого совместимого с кистью свойства, такого как свойство Background
элемента Button
:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Независимо от того, какое совместимое с кистью свойство устанавливается с использованием специального объекта DrawingBrush
, визуализация двумерного графического изображения в итоге получается с намного меньшими накладными расходами, чем в случае визуализации того же изображения посредством фигур.
Включение типов Drawing в DrawingImage
Тип DrawingImage
позволяет подключать рисованный геометрический объект к элементу управления Image
из WPF. Взгляните на следующую разметку:
В данном случае элемент GeometryDrawing
был помещен внутрь элемента DrawingImage
, а не DrawingBrush
. С применением элемента DrawingImage
можно установить свойство Source
элемента управления Image
.
Работа с векторными изображениями
По всей видимости, вы согласитесь с тем, что художнику будет довольно трудно создавать сложное векторное изображение с использованием инструментов и приемов, предоставляемых средой Visual Studio. В распоряжении художников есть собственные наборы инструментов, которые позволяют производить замечательную векторную графику. Изобразительными возможностями подобного рода не обладает ни IDE-среда Visual Studio, ни сопровождающий ее инструмент Microsoft Blend. Перед тем, как векторные изображения можно будет импортировать в приложение WPF, они должны быть преобразованы в выражения путей. После этого можно программировать с применением сгенерированной объектной модели, используя Visual Studio.
На заметку! Используемое изображение (LaserSign.svg
) и экспортированные данные путей (LaserSign.xaml
) можно найти в подкаталоге Chapter_26 загружаемого кода примеров. Изображение взято из статьи Википедии по ссылке https://ru.wikipedia.org/wiki/Символы_опасности
.
Преобразование файла с векторной графикой в файл XAML
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT