WPF - 是否可以(以编程方式)禁用多点触控?

时间:2011-04-12 15:20:11

标签: c# .net wpf multi-touch

我对带有(多)触摸屏的平板电脑的WPF应用/演示有问题。演示文稿的一个“幻灯片”包括背景上的Canvas和一个小的UserControl。此UserControl在开始时是不可见的,但是当用户触摸屏幕时,它变得可见,并且如果用户移动他的手指,则控件相应地移动(“跟随”手指,如光标)。然后,当用户停止触摸屏幕时,控件再次变得不可见。

使用TouchDown,TouchUp和TouchMove事件处理程序并不是很难,如果用户只用一根手指触摸屏幕就可以正常工作。但是,当用户将一根手指放在位置X(例如画布坐标[100,100])而另一根手指放在位置Y(例如[500,100])时,UserControl开始在位置X和Y之间跳跃,这看起来不太好...

现在我希望屏幕只对当时的一次触摸做出反应,我可以在操作系统(Windows 7)中使用控制面板进行操作 - >笔和触摸 - >通过取消选中项目“启用多点触控手势和着墨”来触摸。

这很好,完全符合我的要求,不幸的是它不是很方便,因为有时候我需要使用多点触控,每次我决定使用应用程序时都无法改变它......

这就是为什么我想问一下如何在我需要它的应用程序(或仅在WPF UserControl中)中禁用多点触控程序。非常感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:4)

查看TouchDevice.Id属性。您可以从传递给触摸事件的事件参数中获取此信息,它将允许您唯一地标识触摸事件,以便您不会将第一次触摸与后续并行触摸混淆。

答案 1 :(得分:1)

您可以将C ++代码从以下问题转换为C#:Programatically enable / disable multitouch finger input?

CodeProject 文章“Single App Instance in C#: Yet Another Way”包含Win32 GlobalAddAtom()函数和 PInvoke.net 的C#实现有一个SetProp()的参考页面。

答案 2 :(得分:1)

您可以使用布尔值,例如。 IsCurrentTouched,如果用户触摸并显示控件,则将其设置为true,并在触摸释放时将其设置为false。

虽然IsCurrentTouchedtrue但对其他触摸没有反应。因此,您只能在需要时使用多点触控; ​​- )