Тип 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
Прежде чем можно будет импортировать сложные графические данные (такие как векторная графика) в приложение WPF, графику понадобится преобразовать в данные путей. Чтобы проиллюстрировать, как это делается, возьмите пример файла изображения .svg
Inkscape (из веб-сайта www.inkscape.org). С помощью Inkscape откройте файл LaserSign.svg из подкаталога Chapter_26. Вы можете получить запрос о модернизации формата. Установите настройки, как показано на рис. 26.12.Следующие шаги поначалу покажутся несколько странными, но на самом деле они представляют собой простой способ преобразования векторных изображений в разметку XAML. Когда изображение приобрело желаемый вид, необходимо выбрать пункт меню File
► Print (Файл►Печать). В открывшемся окне нужно ввести имя файла и выбрать место, где он должен быть сохранен, после чего щелкнуть на кнопке Save (Сохранить). В результате получается файл*.xps (или *.oxps).На заметку!
В зависимости от нескольких переменных среды в конфигурации системы сгенерированный файл будет иметь либо расширение.xps, либо расширение .oxps. В любом случае дальнейший процесс идентичен.Форматы *.xps
*.oxps в действительности представляют собой архивы ZIP. Переименовав расширение в .zip, файл можно открыть в проводнике файлов (либо в 7-Zip или в предпочитаемой утилите архивации). Файл содержит иерархию папок, приведенную на рис. 26.13.Необходимый файл находится в папке Pages
Documents/1/Pages) и называется 1.fpage. Откройте его в текстовом редакторе и скопируйте в буфер все данные кроме открывающего и закрывающего дескрипторов FixedPage. Данные путей затем можно поместить внутрь элемента Canvas главного окна в Kaxaml. В итоге изображение будет показано в окне XAML.На заметку!
В последней версииInkscape есть возможность сохранить файл в формате Microsoft XAML. К сожалению, на момент написания главы он не был совместим с WPF.Импортирование графических данных в проект WPF
Создайте новый проект приложения WPF по имени InteractiveLaserSign
Height и Width элемента Window соответственно на 600 и 650 и замените элемент Grid элементом Canvas: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:InteractiveLaserSign"
mc:Ignorable="d"
Title="MainWindow" Height="600" Width="650">
Скопируйте полную разметку XAML из файла 1.fpage
FixedPage) и вставьте ее в элемент управления Canvas внутри MainWindow. Просмотрев окно в режиме проектирования, легко удостовериться в том, что знак опасности лазерного излучения успешно воспроизводится в приложении.