Почему я должен использовать InkCanvas в WPF? - PullRequest
13 голосов
/ 09 марта 2010

В моем приложении WPF есть некоторые функции рисования. Я решил это, используя Canvas и обрабатывая жесты мыши вручную, и также добавляю нарисованные штрихи (обернутые в InkPresenter) к этому Canvas.

Используя Blend, я неожиданно обнаружил, что есть нечто, называемое InkCanvas . Согласно Blend, это элемент управления, который «Определяет область, которая получает и отображает чернильные мазки». , так что это звучит соответствующим тому, что я делаю. Но все, кажется, работает нормально, используя простой Canvas ..

Итак, Чем InkCanvas отличается от простого Canvas, и почему я должен использовать его вместо этого?

Ответы [ 3 ]

12 голосов
/ 09 марта 2010

Они действительно предназначены для двух разных целей. Canvas для макета. Специально для более точного управления макетом с использованием абсолютного позиционирования. InkCanvas, как вы знаете, для захвата и отображения штрихов.

То, что вы делаете, просто прекрасно, но InkCanvas имеет некоторые приятные дополнительные функции, такие как EditMode и другие. Оно предназначено для того, чтобы избавить вас от написания множества вещей, которые вам пришлось бы делать вручную, используя Canvas. Использование Canvas - это ваш собственный подход, где InkCanvas - это использование предварительно встроенного подхода.

6 голосов
/ 09 марта 2010

InkCanvas обрабатывает события мыши для рисования на холсте. У этого также есть эта функциональность:

  • Сохранение / загрузка
  • Изменение размера / Scale
  • Подсветка за текстом
  • Режим ластика

http://www.kirupa.com/blend_wpf/inkcanvas_pg1.htm

4 голосов
/ 04 сентября 2011

Когда речь идет о производительности, InkCanvas с реальными событиями мыши намного быстрее, чем создание обводки из StylusPointCollection, я обнаружил, что добавление новых точек в StylusPointCollection является дорогостоящей операцией.

...