应用,提高触摸事件的性能

时间:2012-01-13 20:09:55

标签: c# wpf performance touch multi-touch

基本上,我有一个8000px到8000px的应用程序。我们可以放大以查看特定部分,例如收音机,或者我们可以缩小以查看所有内容。

汽车的每个部分都是一个控件,我们可以用手指操作,双触摸或多点触控显示器。

我的问题是:对于操纵控件,例如音量按钮,用户需要像现实生活中一样移动鼠标,因此使用圆形运动。 使用鼠标,一切都很完美,它可以毫不拖延地立即响应。我使用OnMouseLeftButtonDown,OnMouseMove等。 通过触摸,计算机似乎很难获得触摸位置并且存在巨大的延迟,尤其是当用户同时用两个手指移动2个不同的按钮时。我使用OnTouchDown,OnTouchMove等......

鼠标和触摸之间的唯一区别是当我们需要获取位置时,我使用鼠标:(e是MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this);

使用Touch我使用:(e是TouchEventArgs)

Point currentPosition = e.GetTouchPoint(this).Position;

此后的一切都是一样的。

我不知道是不是因为我在我的应用程序中有太多的控制权(超过5000我们可以操纵,但是当我们只放大2控制它是同样的事情)或者因为它真的很难计算机从触摸事件中获得位置....

有人可以帮我吗?我需要找到一个消除滞后的解决方案。

我使用Visual Studio 2010,Blend 4,.NET 4.0 Windows 7 64位 7 Gb RAM 至强2.13 Ghz,2核,8线程 屏幕:ELO技术,在NEC 2490WUXi2屏幕中

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

很难说为什么会出现这样的问题 - 可能是OnTouchMove比MouseMove更频繁地被触发,你应该创建一些额外的处理来平滑触摸位置数据。 我试着评论下的所有代码 Point currentPosition = e.GetTouchPoint(this).Position;

并查看表现。

另一种方法是计算触发OnTouchMove的数量。

答案 2 :(得分:1)

问题在于触摸设备,尝试另一个设备来查看滞后是否仍然存在。