Элемент управления 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 демонстрируются разные режимы в действии.

<p id="AutBody_Root1155"><strong>Элемент управления ComboBox</strong></p>

После заполнения элемента управления 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 =

Перейти на страницу:

Похожие книги