我们正在评估触摸屏键盘,我们需要同时跟踪10个手指。问题是触摸屏驱动程序非常不稳定(并且没有固定版本)。对于这么多手指,它每秒为FrameReported
事件发送2500多个事件。即使我们在开始时丢弃了90%,也没有办法处理所有这些问题。根本无法跟上并对数据做任何有意义的事情。
我还尝试使用窗口的(预览)System.Windows.Input.Touch.FrameReported
事件而不是TouchMove
;同样的问题在这里。
所以现在我想要,而不是使用事件,在一个单独的线程中进行轮询,但我找不到有关如何获取所有当前接触点的信息。
我发现的唯一的东西是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;
}
}
}
}