2015-03-27 2 views
0

J'ai un contrôle InkCanvas qui prend tout mon écran. Il prend la souris ou l'entrée tactile pour dessiner. J'ai la configuration la plus élémentaire de InkCanvas et il ressemble à ceci:WPF InkCanvas La largeur/hauteur du dessin n'est pas cohérente dans différents environnements

<InkCanvas Grid.Row="2" x:Name="inkCanvas"> 
</InkCanvas> 

Je peux tracer des traits à la fois en utilisant la souris et la saisie tactile. Le comportement est cohérent en ce qui concerne la largeur/hauteur du trait (ils sont identiques). Toutefois, lorsque j'essaie de dessiner sur le même InkCanvas à l'aide de mon API d'injection tactile (j'injecte des touches dans OS à l'aide de Win32 Touch Functions), les traits apparaissent beaucoup plus fins.

J'ai essayé de changer le dessin des attributs sur elle en ajoutant les éléments suivants:

<InkCanvas Grid.Row="2" x:Name="inkCanvas"> 
    <InkCanvas.DefaultDrawingAttributes> 
     <DrawingAttributes Width="10" Height="10"/> 
    </InkCanvas.DefaultDrawingAttributes> 
</InkCanvas> 

Après avoir fait ce changement les coups tirés par injection toucher proportionnellement augmenté en largeur et en hauteur. Mais encore une fois, ils étaient beaucoup plus minces comparés à la souris ou à l'entrée tactile directe. Ma question est de savoir si quelqu'un a joué avec InkCanvas en utilisant l'API Windows Touch Injection et sait exactement pourquoi InkCanvas se comporte différemment entre Direct Touch et Injected Touch.

De même, existe-t-il un autre moyen de définir la largeur et la hauteur des traits InkCanvas, à l'exception de ce que je fais?

Répondre

0

OK, trouvé la solution. Il semble que lorsque vous utilisez une entrée tactile, le système d'exploitation signale une pression par défaut. InkCanvas lui-même honore cette pression et lui attribue une valeur particulière.

Mon API d'injection tactile ne rapporte aucune pression (par exemple, il est 0). En conséquence, les traits sembleraient beaucoup plus minces. La ligne suivante l'a corrigé:

<InkCanvas> 
    <InkCanvas.DefaultDrawingAttributes> 
     <DrawingAttributes IgnorePressure="True"/> 
    </InkCanvas.DefaultDrawingAttributes> 
</InkCanvas>