Почему я должен использовать InkCanvas в WPF?

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

используя Blend я вдруг обнаруживаю, что есть что-то под названием объекта inkcanvas. В соответствии с Blend это контроль, который "определяет область, которая получает и выводит чернильные штрихи.", поэтому это звучит релевантно тому, что я делаю. Но все кажется чтобы работать нормально, используя простой холст..

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

3 ответов


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

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


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

  • Сохранить/Загрузить
  • Изменить Размер/Масштабировать
  • выделить за текстом
  • режим ластика

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


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