Элемент управления InkCanvas
EditingMode, которому можно присвоить любое значение из связанного перечисления InkCanvasEditingMode. В данном примере вас интересует режим Ink, принятый по умолчанию, который только что демонстрировался, режим Select, позволяющий пользователю выбирать с помощью мыши область для перемещения или изменения размера, и режим EraseByStroke, который удаляет предыдущий штрих мыши.На заметку!
Штрих — это визуализация, которая происходит во время одиночной операции нажатия и отпускания кнопки мыши. Элемент управленияInkCanvas сохраняет все штрихи в объекте StrokeCollection, который доступен с применением свойства Strokes.Обновите обработчик RadioButtonClicked()
InkCanvas в нужный режим в зависимости от выбранного переключателя RadioButton:private void RadioButtonClicked(object sender,RoutedEventArgs e)
{
// В зависимости от того, какая кнопка отправила событие,
// поместить InkCanvas в нужный режим оперирования.
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 (элемент управления ComboBox более подробно рассматривается в следующем разделе):public MainWindow()
{
this.InitializeComponent();
// Установить режим Ink в качестве стандартного.
this.MyInkCanvas.EditingMode = InkCanvasEditingMode.Ink;
this.inkRadio.IsChecked = true;
this.comboColors.SelectedIndex = 0;
}
Теперь запустите программу еще раз, нажав <F5
>. Войдите в режимInk и нарисуйте что-нибудь. Затем перейдите в режим Erase и сотрите ранее нарисованное (курсор мыши автоматически примет вид стирающей резинки). Наконец, переключитесь в режим Select и выберите несколько линий, используя мышь в качестве лассо.Охватив элемент, его можно перемещать по поверхности холста, а также изменять размеры. На рис. 25.20 демонстрируются разные режимы в действии.
Элемент управления ComboBox
После заполнения элемента управления ComboBox
ListBox) есть три способа определения выбранного в них элемента. Во-первых, когда необходимо найти числовой индекс выбранного элемента, должно применяться свойство SelectedIndex (отсчет начинается с нуля; значение -1 представляет отсутствие выбора). Во-вторых, если требуется получить объект, выбранный внутри списка, то подойдет свойство SelectedItem. В-третьих, свойство SelectedValue позволяет получить значение выбранного объекта (обычно с помощью вызова ToString()).Последний фрагмент кода, который понадобится добавить для данной вкладки, отвечает за изменение цвета штрихов, нарисованных в InkCanvas
DefaultDrawingAttributes элемента InkCanvas возвращает объект DrawingAttributes, который позволяет конфигурировать многочисленные аспекты пера, включая его размер и цвет (помимо других настроек). Модифицируйте код C# следующей реализацией метода ColorChanged():private void ColorChanged(object sender, SelectionChangedEventArgs e)
{
// Получить выбранный элемент в раскрывающемся списке.
string colorToUse =
(this.comboColors.SelectedItem as ComboBoxItem)?.Content.ToString();
// Изменить цвет, используемый для визуализации штрихов.
this.MyInkCanvas.DefaultDrawingAttributes.Color =