3

我们正在评估触摸屏键盘,其中一个我们需要同时跟踪 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;
            }
        }
    }
}
4

0 回答 0