Язык программирования C#9 и платформа .NET5
Часть 531 из 642 Информация о книге
Построение кисти 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
Теперь объект
можно использовать для установки значения любого свойства, требующего объекта кисти. Например, после подготовки следующей разметки в редакторе Kaxaml с помощью синтаксиса "элемент-свойство" можно рисовать изображение по всей поверхностиDrawingBrush:Page<Pagexmlns="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<Pagexmlns="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>