【问题标题】:WPF InkCanvas drawing width/height not consistent in different environmentsWPF InkCanvas 绘图宽度/高度在不同环境中不一致
【发布时间】:2015-03-27 01:31:40
【问题描述】:

我有一个占据整个屏幕的 InkCanvas 控件。绘图需要鼠标或触摸输入。我有 InkCanvas 最基本的配置,它看起来像这样:

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

我可以使用鼠标和触摸输入来绘制笔触。就笔画宽度/高度而言,行为是一致的(它们是相同的)。但是,当我尝试使用我的触摸注入 API(我使用 Win32 触摸功能将触摸注入操作系统)在同一个 InkCanvas 上绘图时,笔触看起来要细得多。

我尝试通过添加以下内容来更改其上的绘图属性:

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

【问题讨论】:

    标签: c# wpf winapi touch inkcanvas


    【解决方案1】:

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

    我的触摸注入 API 未报告任何压力(例如,它为 0)。结果,笔画会显得更细。以下行修复了它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2017-08-11
      • 2011-01-20
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多