TabletPC,InkCanvas-选择性捕捉鼠标、笔或触摸

本文关键字:触摸 鼠标 InkCanvas- 选择性 TabletPC | 更新日期: 2023-09-27 18:26:18

我需要编写一个C#WPF应用程序来捕捉平板电脑上的点,我正在使用InkCanvas,但我找不到一种方法来选择性地配置InkCan画布,使其仅获取鼠标、笔和触摸点的组合(在我的场景中,我只需要笔或鼠标,从不触摸)。该解决方案必须在Windows XP到Windows 8.1之间运行。

我试着按照这个例子写一个StylusPlugin,但是:

  • RawStylusInput.StylusDeviceId在不同的平板电脑上不会返回相同的值
  • 即使我能区分鼠标、笔和触摸,我也不能使用RawStylusInput.SetStylusPoints来删除不需要的StylusPoint,因为该方法不接受null或空的Stylus PointCollection作为参数

这个解决方案似乎有效,但实时触控笔不像WPF,我想使用InkCanvas。

TabletPC,InkCanvas-选择性捕捉鼠标、笔或触摸

如果您只是想有选择地只允许对InkCanvas进行笔或鼠标交互,您可以处理PreviewMouseDown预览样式向下,和InkCanvas上的PreviewTouchDown事件,如果要禁用该类型的输入,请将EventArgs的Handled属性设置为true。在您的情况下,以下内容应该有效。

    private void InkCanvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        if (!mouseInputEnabled)
            e.Handled = true;
    }
    private void InkCanvas_PreviewStylusDown(object sender, StylusDownEventArgs e)
    {
        if (!stylusInputEnabled)
            e.Handled = true;
    }
    private void InkCanvas_PreviewTouchDown(object sender, TouchEventArgs e)
    {
        e.Handled = true;
    }