Язык программирования C#9 и платформа .NET5
Обработка событий для вкладки Ink API
Следующая задача для вкладки
связана с организацией обработки событияInk APIдля каждого элемента управленияClick. Как вы поступали в других проектах WPF, просто щелкните на значке с изображением молнии в окне Properties среды Visual Studio и введите имена обработчиков событий. С помощью упомянутого приема свяжите событиеRadioButtonкаждого элемента управленияClickс тем же самым обработчиком по имениRadioButton. После обработки всех трех событийRadioButtonClickedобработайте событиеClickэлемента управленияSelectionChanged, используя обработчик по имениComboBox. В результате должен получиться следующий код С#:ColorChangedpublic partial class MainWindow : Window{public MainWindow(){this.InitializeComponent();// Вставить сюда код, требуемый при создании объекта.}private void RadioButtonClicked(object sender,RoutedEventArgs e){// TODO: добавить сюда реализацию обработчика событий.}private void ColorChanged(object sender,SelectionChangedEventArgs e){// TODO: добавить сюда реализацию обработчика событий.}}Обработчики событий будут реализованы позже, так что оставьте их пока пустыми.
Добавление элементов управления в панель инструментов
Вы добавите элемент управления
путем прямого редактирования разметки XAML. Имейте в виду, что панель инструментов Visual Studio по умолчанию не отображает все возможные компоненты WPF, но содержимое панели инструментов можно обновлять.InkCanvasЩелкните правой кнопкой мыши где-нибудь в области панели инструментов и выберите в контекстном меню пункт Choose Items (Выбрать элементы). Вскоре появится список возможных компонентов для добавления в панель инструментов. Вас интересует элемент управления
(рис. 25.18).InkCanvasНа заметку! Элементы управления Ink API не совместимы с визуальным конструктором XAML в версии Visual Studio 16.8.3 (текущая версия на момент написания главы) или Visual Studio 16.9 Preview 2. Использовать элементы управления можно, но только не через визуальный конструктор.
Элемент управления InkCanvas
Простое добавление
делает возможным рисование в окне. Рисовать можно с помощью мыши либо, если есть устройство, воспринимающее касания, то пальца или цифрового пера. Запустите приложение и нарисуйте что-нибудь (рис. 25.19).InkCanvasЭлемент управления
обеспечивает нечто большее, чем просто рисование штрихов с помощью мыши (или пера); он также поддерживает несколько уникальных режимов редактирования, управляемых свойствомInkCanvas, которому можно присвоить любое значение из связанного перечисленияEditingMode. В данном примере вас интересует режимInkCanvasEditingMode, принятый по умолчанию, который только что демонстрировался, режимInk, позволяющий пользователю выбирать с помощью мыши область для перемещения или изменения размера, и режимSelect, который удаляет предыдущий штрих мыши.EraseByStrokeНа заметку! Штрих — это визуализация, которая происходит во время одиночной операции нажатия и отпускания кнопки мыши. Элемент управления
сохраняет все штрихи в объектеInkCanvas, который доступен с применением свойстваStrokeCollection.StrokesОбновите обработчик
следующей логикой, которая помещаетRadioButtonClicked()в нужный режим в зависимости от выбранного переключателяInkCanvas:RadioButtonprivate void RadioButtonClicked(object sender,RoutedEventArgs e){<b> // В зависимости от того, какая кнопка отправила событие,</b><b> // поместить InkCanvas в нужный режим оперирования.</b>this.MyInkCanvas.EditingMode =(sender as RadioButton)?.Content.ToString() switch{// Эти строки должны совпадать со значениями свойства Content// каждого элемента RadioButton."Ink Mode!" => InkCanvasEditingMode.Ink,"Erase Mode!" => InkCanvasEditingMode.EraseByStroke,"Select Mode!" => InkCanvasEditingMode.Select,_ => this.MyInkCanvas.EditingMode};}Вдобавок установите
как стандартный режим в конструкторе окна. Там же установите стандартный выбор дляInk(элемент управленияComboBoxболее подробно рассматривается в следующем разделе):ComboBoxpublic MainWindow(){this.InitializeComponent();// Установить режим Ink в качестве стандартного.this.MyInkCanvas.EditingMode = InkCanvasEditingMode.Ink;

