KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Перейти на страницу:

<b>    &lt;/DrawingBrush&gt;</b>

  &lt;/Button.Background&gt;

  &lt;/Button&gt;

&lt;/Page&gt;

Независимо от того, какое совместимое с кистью свойство устанавливается с использованием специального объекта

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

Включение типов Drawing в DrawingImage

Тип

DrawingImage
позволяет подключать рисованный геометрический объект к элементу управления
Image
из WPF. Взгляните на следующую разметку:

&lt;Image&gt;

  &lt;Image.Source&gt;

    &lt;DrawingImage&gt;

      &lt;DrawingImage.Drawing&gt;

        &lt;!--Same GeometryDrawing from above --&gt;

      &lt;/DrawingImage.Drawing&gt;

    &lt;/DrawingImage&gt;

  &lt;/Image.Source&gt;

&lt;/Image&gt;

В данном случае элемент

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.

Язык программирования C#9 и платформа .NET5 - _240.png

Следующие шаги поначалу покажутся несколько странными, но на самом деле они представляют собой простой способ преобразования векторных изображений в разметку XAML. Когда изображение приобрело желаемый вид, необходимо выбрать пункт меню File► Print (Файл►Печать). В открывшемся окне нужно ввести имя файла и выбрать место, где он должен быть сохранен, после чего щелкнуть на кнопке Save (Сохранить). В результате получается файл

*.xps
(или
*.oxps
).

На заметку! В зависимости от нескольких переменных среды в конфигурации системы сгенерированный файл будет иметь либо расширение

.xps
, либо расширение
.oxps
. В любом случае дальнейший процесс идентичен.

Форматы

*.xps
и
*.oxps
в действительности представляют собой архивы ZIP. Переименовав расширение в
.zip
, файл можно открыть в проводнике файлов (либо в 7-Zip или в предпочитаемой утилите архивации). Файл содержит иерархию папок, приведенную на рис. 26.13.

Язык программирования C#9 и платформа .NET5 - _241.png

Необходимый файл находится в папке

Pages
(
Documents/1/Pages
) и называется
1.fpage
. Откройте его в текстовом редакторе и скопируйте в буфер все данные кроме открывающего и закрывающего дескрипторов
FixedPage
. Данные путей затем можно поместить внутрь элемента
Canvas
главного окна в Kaxaml. В итоге изображение будет показано в окне XAML.

На заметку! В последней версии

Inkscape
есть возможность сохранить файл в формате Microsoft XAML. К сожалению, на момент написания главы он не был совместим с WPF.

Импортирование графических данных в проект WPF

Создайте новый проект приложения WPF по имени

InteractiveLaserSign
. Измените значения свойств
Height
и
Width
элемента
Window
соответственно на
600
и
650
и замените элемент
Grid
элементом
Canvas
:

&lt;Window x:Class=&quot;InteractiveLaserSign.MainWindow&quot;

  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;

  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;

  xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*