Por que devo usar o InkCanvas no WPF?
Pergunta
No meu aplicativo WPF, tenho alguma funcionalidade de desenho. Eu resolvi isso usando uma tela e gestos de mouse manualmente, e também adiciono os traços desenhados (embrulhados no InkPresenter) a essa tela.
Usando a mistura, de repente descobri que há algo chamado InkCanvas. De acordo com a mistura, este é um controle que "Define uma área que recebe e exibe traços de tinta"., então parece relevante para o que eu faço. Mas tudo parece funcionar bem usando uma tela simples.
Então; Como os InkCanvas diferem da tela simples e por que devo optar por usar isso?
Solução
Eles realmente devem servir a dois propósitos diferentes. Canvas
é para layout. Especificamente para um controle mais exato sobre o layout usando o posicionamento absoluto. InkCanvas
é, como você sabe, para capturar e exibir traços.
O que você está fazendo está bem, mas InkCanvas
tem alguns bons recursos adicionais, como EditMode
entre outros. É para salvá -lo de escrever muitas das coisas que você teria que fazer à mão usando Canvas
. Usando Canvas
é um rolo seu próprio tipo de abordagem onde InkCanvas
é um uso pré-construído em uma espécie de abordagem.
Outras dicas
Um InkCanvas lida com os eventos do mouse para você desenhar na tela. Ele também tem essa funcionalidade:
- Salvar/carregar
- Redimensionar/escala
- Destaque por trás do texto
- Modo borracha
Quando o desempenho está preocupado, o InkCanvas com eventos reais do mouse é muito mais rápido do que criar um golpe no StylusPointCollection, descobri que adicionar novos pontos a um StylusPointCollection é uma operação cara.