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

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

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

Построение кисти DrawingBrush с использованием геометрических объектов

Ранее в главе элемент

Path
заполнялся группой геометрических объектов примерно так:

<Path Fill = "Orange" Stroke = "Blue" StrokeThickness = "3">

  <Path.Data>

    <GeometryGroup>

      <EllipseGeometry Center = "75,70" RadiusX = "30" RadiusY = "30" />

   <RectangleGeometry Rect = "25,55 100 30" />

    <LineGeometry StartPoint="0,0" EndPoint="70,30" />

    <LineGeometry StartPoint="70,30" EndPoint="0,30" />

  </GeometryGroup>

  </Path.Data>

</Path>

Поступая подобным образом, вы достигаете интерактивности

Path
при чрезвычайной легковесности, присущей геометрическим объектам. Однако если необходимо визуализировать аналогичный вывод и отсутствует потребность в любой (готовой) интерактивности, тогда тот же самый элемент
<GeometryGroup>
можно поместить внутрь
DrawingBrush
:

<DrawingBrush>

  <DrawingBrush.Drawing>

    <GeometryDrawing>

      <GeometryDrawing.Geometry>

        <GeometryGroup>

          <EllipseGeometry Center = "75,70" RadiusX = "30" RadiusY = "30" />

          <RectangleGeometry Rect = "25,55 100 30" />

          <LineGeometry StartPoint="0,0" EndPoint="70,30" />

          <LineGeometry StartPoint="70,30" EndPoint="0,30" />

        </GeometryGroup>

      </GeometryDrawing.Geometry>

<b>      &lt;!-- Специальное перо для рисования границ --&gt;</b>

      &lt;GeometryDrawing.Pen&gt;

        &lt;Pen Brush=&quot;Blue&quot; Thickness=&quot;3&quot;/&gt;

      &lt;/GeometryDrawing.Pen&gt;

<b>      &lt;!-- Специальная кисть для заполнения внутренней области --&gt;</b>

      &lt;GeometryDrawing.Brush&gt;

        &lt;SolidColorBrush Color=&quot;Orange&quot;/&gt;

      &lt;/GeometryDrawing.Brush&gt;

    &lt;/GeometryDrawing&gt;

  &lt;/DrawingBrush.Drawing&gt;

&lt;/DrawingBrush&gt;

При помещении группы геометрических объектов внутрь

DrawingBrush
также понадобится установить объект
Pen
, применяемый для рисования границ, потому что свойство
Stroke
больше не наследуется от базового класса
Shape
. Здесь был создан элемент 
Pen
с теми же настройками, которые использовались в значениях
Stroke
и
StrokeThickness
из предыдущего примера
Path
.

Кроме того, поскольку свойство

Fill
больше не наследуется от класса
Shape
, нужно также применять синтаксис "элемент-свойство" для определения объекта кисти, предназначенного элементу
DrawingGeometry
, со сплошным оранжевым цветом, как в предыдущих настройках
Path
.

Рисование с помощью DrawingBrush

Теперь объект

DrawingBrush
можно использовать для установки значения любого свойства, требующего объекта кисти. Например, после подготовки следующей разметки в редакторе Kaxaml с помощью синтаксиса "элемент-свойство" можно рисовать изображение по всей поверхности
Page
:

&lt;Page

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

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

  &lt;Page.Background&gt;

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

<b>      &lt;!-- Тот же самый объект DrawingBrush, что и ранее --&gt;</b>

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

  &lt;/Page.Background&gt;

&lt;/Page&gt;

Или же элемент

DrawingBrush
можно применять для установки другого совместимого с кистью свойства, такого как свойство
Background
элемента
Button
:

&lt;Page

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

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

  &lt;Button Height=&quot;100&quot; Width=&quot;100&quot;&gt;

  &lt;Button.Background&gt;

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

<b>      &lt;!-- Тот же самый объект DrawingBrush, что и ранее --&gt;</b>

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