我们正在评估触摸屏键盘,其中一个我们需要同时跟踪 10 个手指。问题是触摸屏驱动程序非常不稳定(并且没有固定版本)。FrameReported
对于这么多手指,它每秒为该事件发送 2500 多个事件。没有办法处理所有这些,即使我们一开始就丢弃了 90%。根本不可能跟上数据的步伐并对数据做任何有意义的事情。
而不是System.Windows.Input.Touch.FrameReported
,我还尝试使用TouchMove
窗口的 (Preview) 事件;这里同样的问题。
所以现在我想在一个单独的线程中轮询,而不是使用事件,但我找不到有关如何获取所有当前接触点的信息。
我发现的唯一东西是 WinForms hack,但这不是一个选项,因为那时我将无法在我的窗口中呈现任何 WPF 控件。
有什么解决办法吗?
编辑1:
这是处理所有移动事件的代码:
private void UserControlTouchMove(object sender, TouchEventArgs e)
{
//Update Position of the corresponding point
var touch = e.GetTouchPoint(this);
var id = touch.TouchDevice.Id;
e.Handled = true;
var position = touch.Position;
//update finger on display, quick and dirty
if (m_ShowFingers)
{
foreach (var finger in m_Fingers)
{
if (id == (int)finger.DataContext)
{
finger.RenderTransform = new TranslateTransform(position.X - HalfFingerSize, position.Y - HalfFingerSize);
break;
}
}
}
}