タッチスクリーン キーボードを評価しており、同時に 10 本の指を追跡する必要があります。問題は、タッチスクリーン ドライバーが非常に不安定なことです (修正されたバージョンはありません)。FrameReported
非常に多くの指に対して毎秒 2500 以上のイベントを送信します。最初に 90% を破棄したとしても、それらすべてを処理する方法はありません。データに遅れずについていき、意味のあることを行うことはまったく不可能です。
の代わりに、ウィンドウの (プレビュー) イベントSystem.Windows.Input.Touch.FrameReported
も使用しようとしました。TouchMove
ここでも同じ問題。
イベントを使用する代わりに、別のスレッドでポーリングしたかったのですが、現在のすべてのタッチポイントを取得する方法に関する情報が見つかりません。
私が見つけたのは WinForms のハックだけですが、これはオプションではありません。それは、ウィンドウに 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;
}
}
}
}