我有一个InkCanvas控件,它占据了整个屏幕。它需要鼠标或触摸输入才能进行绘图。我有最基本的InkCanvas配置,它看起来像这样:
<InkCanvas Grid.Row="2" x:Name="inkCanvas">
</InkCanvas>
我可以使用鼠标和触摸输入绘制笔画。就行程宽度/高度而言,行为是一致的(它们是相同的)。但是,当我尝试使用我的触摸注入API绘制相同的InkCanvas时(我使用Win32触摸函数将触摸注入操作系统),笔划看起来要薄得多。
我尝试通过添加以下内容来更改其上的绘图属性:
<InkCanvas Grid.Row="2" x:Name="inkCanvas">
<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes Width="10" Height="10"/>
</InkCanvas.DefaultDrawingAttributes>
</InkCanvas>
进行此更改后,使用触摸注射绘制的笔划在宽度和高度上按比例增长。但与鼠标或直接触摸输入相比,它们再次变薄了。
我的问题是,是否有人使用Windows Touch Injection API使用InkCanvas,并确切知道为什么InkCanvas在Direct Touch和Injected Touch之间的行为方式不同。
另外,除了我正在做的方式之外,还有其他方法可以设置InkCanvas笔画的宽度和高度吗?
答案 0 :(得分:0)
好的,找到了解决方案。似乎在使用触摸输入时操作系统报告了一些默认压力。 InkCanvas本身就是为了承受这种压力并为其赋予特定的价值。
我的触控注入API未报告任何压力(例如,它为0)。结果,笔画看起来会更薄。以下行修复了它:
<InkCanvas>
<InkCanvas.DefaultDrawingAttributes>
<DrawingAttributes IgnorePressure="True"/>
</InkCanvas.DefaultDrawingAttributes>
</InkCanvas>