Язык программирования C#9 и платформа .NET5
Часть 522 из 642 Информация о книге
<DockPanel LastChildFill="True"><ToolBar DockPanel.Dock="Top" Name="mainToolBar" Height="50"></ToolBar><Canvas Background="LightBlue" Name="canvasDrawingArea"/></DockPanel>pictureЗаполните элемент
набором объектовToolBar, каждый из которых содержит объект специфического класса, производного отRadioButton. Легко заметить, что каждому элементуShapeназначается то же самое групповое имяRadioButton(чтобы обеспечить взаимное исключение) и также подходящее индивидуальное имя.GroupName<ToolBar DockPanel.Dock="Top" Name="mainToolBar" Height="50"><RadioButton Name="circleOption" GroupName="shapeSelection"Click="CircleOption_Click"><Ellipse Fill="Green" Height="35" Width="35" /></RadioButton><RadioButton Name="rectOption" GroupName="shapeSelection"Click="RectOption_Click"><Rectangle Fill="Red" Height="35" Width="35" RadiusY="10" RadiusX="10" /></RadioButton><RadioButton Name="lineOption" GroupName="shapeSelection"Click="LineOption_Click"><Line Height="35" Width="35" StrokeThickness="10" Stroke="Blue"X1="10" Y1="10" Y2="25" X2="25"StrokeStartLineCap="Triangle" StrokeEndLineCap="Round" /></RadioButton></ToolBar>Как видите, объявление объектов
,RectangleиEllipseв разметке XAML довольно прямолинейно и требует лишь минимальных комментариев. Вспомните, что свойствоLineпозволяет указать кисть для рисования внутренностей фигуры. Когда нужна кисть сплошного цвета, можно просто задать жестко закодированную строку известных значений, а соответствующий преобразователь типа сгенерирует корректный объект. Интересная характеристика типаFillсвязана с тем, что в нем определены свойстваRectangleиRadiusX, позволяющие визуализировать скругленные углы.RadiusYОбъект
представлен своими начальной и конечной точками с использованием свойствLine,X1,Х2иY1(учитывая, что высота и ширина при описании линии имеют мало смысла). Здесь устанавливается несколько дополнительных свойств, которые управляют тем, как визуализируются начальная и конечная точки объектаY2, а также настраивают параметры штриха. На рис. 26.1 показана визуализированная панель инструментов в визуальном конструкторе WPF среды Visual Studio.LineС помощью окна Properties (Свойства) среды Visual Studio создайте обработчик события
дляMouseLeftButtonDownи обработчик событияCanvasдля каждого элементаClick. Цель заключается в том, чтобы в коде C# визуализировать выбранную фигуру (круг, квадрат или линию), когда пользователь щелкает внутриRadioButton. Первым делом определите следующее вложенное перечисление (и соответствующую переменную-член) внутри класса, производного отCanvas:Windowpublic partial class MainWindow : Window{private enum SelectedShape{ Circle, Rectangle, Line }private SelectedShape _currentShape;}В каждом обработчике
установите переменную-членClickв корректное значениеcurrentShape:SelectedShapeprivate void CircleOption_Click(object sender, RoutedEventArgs e){_currentShape = SelectedShape.Circle;}private void RectOption_Click(object sender, RoutedEventArgs e){_currentShape = SelectedShape.Rectangle;}private void LineOption_Click(object sender, RoutedEventArgs e){_currentShape = SelectedShape.Line;}Посредством обработчика события
элементаMouseLeftButtonDownбудет визуализироваться подходящая фигура (предопределенного размера) в начальной точке, которая соответствует позиции (Canvas,х) курсора мыши. Ниже приведена полная реализация с последующим анализом:у
