WPF InkCanvas绘图宽度/高度在不同环境中不一致

时间:2015-03-27 01:31:41

标签: c# wpf winapi touch inkcanvas

我有一个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笔画的宽度和高度吗?

1 个答案:

答案 0 :(得分:0)

好的,找到了解决方案。似乎在使用触摸输入时操作系统报告了一些默认压力。 InkCanvas本身就是为了承受这种压力并为其赋予特定的价值。

我的触控注入API未报告任何压力(例如,它为0)。结果,笔画看起来会更薄。以下行修复了它:

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