Построение кисти 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> <!-- Специальное перо для рисования границ --></b>
<GeometryDrawing.Pen>
<Pen Brush="Blue" Thickness="3"/>
</GeometryDrawing.Pen>
<b> <!-- Специальная кисть для заполнения внутренней области --></b>
<GeometryDrawing.Brush>
<SolidColorBrush Color="Orange"/>
</GeometryDrawing.Brush>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
При помещении группы геометрических объектов внутрь
DrawingBrush
также понадобится установить объект
Pen
, применяемый для рисования границ, потому что свойство
Stroke
больше не наследуется от базового класса
Shape
. Здесь был создан элемент
Pen
с теми же настройками, которые использовались в значениях
Stroke
и
StrokeThickness
из предыдущего примера
Path
.
Кроме того, поскольку свойство
Fill
больше не наследуется от класса
Shape
, нужно также применять синтаксис "элемент-свойство" для определения объекта кисти, предназначенного элементу
DrawingGeometry
, со сплошным оранжевым цветом, как в предыдущих настройках
Path
.
Рисование с помощью DrawingBrush
Теперь объект
DrawingBrush
можно использовать для установки значения любого свойства, требующего объекта кисти. Например, после подготовки следующей разметки в редакторе Kaxaml с помощью синтаксиса "элемент-свойство" можно рисовать изображение по всей поверхности
Page
:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Page.Background>
<b> <DrawingBrush></b>
<b> <!-- Тот же самый объект DrawingBrush, что и ранее --></b>
<b> </DrawingBrush></b>
</Page.Background>
</Page>
Или же элемент
DrawingBrush
можно применять для установки другого совместимого с кистью свойства, такого как свойство
Background
элемента
Button
:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Height="100" Width="100">
<Button.Background>
<b> <DrawingBrush></b>
<b> <!-- Тот же самый объект DrawingBrush, что и ранее --></b>