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。
如果您只是想有选择地只允许对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;
}