Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
</Ellipse.Fill> </Ellipse> <Ellipse HorizontalAlignment="Left" VerticalAlignment="Top" Height="101" Width="110" Stroke="Black" Canvas.Left="122" Canvas.Top="126"> <Ellipse.Fill> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FFB91DDC" Offset="0.355"/> <GradientStop Color="#FFB0381D" Offset="1"/> </LinearGradientBrush> </Ellipse.Fill> </Ellipse></Canvas>Окончательная компоновка показана на рис. 26.10.

Применение трансформаций на этапе проектирования
Как упоминалось ранее, IDE-среда Visual Studio предоставляет встроенный редактор трансформаций, который можно найти в окне Properties. Раскройте раздел Transform (Трансформация), чтобы отобразить области RenderTransform и LayoutTransform редактора (рис. 26.11).

Подобно разделу Brush раздел Transform предлагает несколько вкладок, предназначенных для конфигурирования разнообразных типов графической трансформации текущего выбранного элемента. В табл. 26.6 описаны варианты трансформации, доступные на этих вкладках (в порядке слева направо).

Испытайте каждую из описанных трансформаций,используя в качестве цели специальную фигуру (для отмены выполненной операции просто нажимайте <Ctrl+Z>). Как и многие другие аспекты раздела Transform окна Properties, каждая трансформация имеет уникальный набор параметров конфигурации, которые должны стать вполне понятными, как только вы просмотрите их. Например, редактор трансформации Skew позволяет устанавливать значения скоса х и у, а редактор трансформации Flip дает возможность зеркально отображать относительно оси х или у и т.д.
Трансформация холста в коде
Реализации обработчиков для всех кнопок будут более или менее похожими. Мы сконфигурируем объект трансформации и присвоим его объекту
myCanvasLayoutTransformprivate void Flip(object sender, System.Windows.RoutedEventArgs e){ myCanvas.LayoutTransform = new ScaleTransform(-1, 1);}private void Rotate(object sender, System.Windows.RoutedEventArgs e){ myCanvas.LayoutTransform = new RotateTransform(180);}private void Skew(object sender, System.Windows.RoutedEventArgs e){ myCanvas.LayoutTransform = new SkewTransform(40, -20);}Визуализация графических данных с использованием рисунков и геометрических объектов
Несмотря на то что типы
ShapePathВходной точкой в этот API-интерфейс является абстрактный класс
System.Windows.Media.DrawingPresentationCore.dllИнфраструктура WPF предлагает разнообразные классы, расширяющие
Drawing
Будучи более легковесными, производные от
DrawingUIElementFrameworkElementДругое ключевое отличие между типами, производными от
DrawingShapeDrawingUIElementDrawingImageDrawingBrushDrawingVisualКласс
DrawingImageDrawingBrushDrawingVisualХотя работать с рисунками немного сложнее, чем с простыми фигурами, отделение графической композиции от графической визуализации делает типы, производные от
DrawingShape