WPF多点触控 - 如何获得所有接触点?

时间:2012-05-25 17:41:39

标签: c# wpf events multi-touch touchscreen

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

0 个答案:

没有答案