WPF でアクティブなタッチ ポイントを取得する方法はありますか? Mouse
クラスのプロパティと同様に、ユーザーが画面に触れているかどうかを判断する必要がありますPressed
か?
画面にタッチが存在するかどうかを知る必要があるだけです。タッチしている UIElement は気にしないでください。
メイン ウィンドウの ManipulationStarting イベント (最初の指が画面に触れたとき)、ManipulationInertiaStarting イベント (最後の指が画面から離れたとき)、ManipulationDelta イベント (いずれかの指が動いたとき) をサブスクライブできます。
イベント ハンドラー内で、 ManipulationDeltaEventArgs.Manipulatorsを介して現在のすべてのタッチポイントのリストを取得できます。
メイン ウィンドウの IsManipulationEnabled を true に設定することを忘れないでください。
このようにして、操作が現在進行中かどうかを覚えておくだけで済みます。個々のタッチ ポイントをすべて自分で追跡する必要はありません。
以下に 2 つのオプションを示しますが、最も正しい方法ではない可能性があります。
1) にサブスクライブして、現在のすべてのタッチ デバイスのリストを維持できMainWindow.PreviewTouchDown
ますMainWindow.PreviewTouchUp
。実装は簡単ですが、コードが乱雑になる可能性があります。
Touch.FrameReported
2)からタッチ ポイントのコレクションを取得できるサブスクライブしますTouchFrameEventArgs.GetTouchPoints(null);
。これは、タッチ イベントが発生するたびに発生するため、頻度が高すぎる可能性がありますが、どのクラスからでもこのイベントを処理できます。