2012-01-13 16 views
13

基本的に、私はアプリケーションの魔女が8000pxで8000pxです。ラジオのような特定の部分を見るためにズームインしたり、ズームアウトしてすべてを見ることができます。アプリケーション、タッチイベントのパフォーマンスを改善

車の各部分は、指で、デュアルタッチまたはマルチタッチモニターで操作できるコントロールです。

私の問題は、ボリュームボタンのようなコントロールを操作するためには、実際にはまるでマウスを動かす必要があるということです。 マウスですべてが完璧です、それは遅れなく即座に応答します。私はOnMouseLeftButtonDown、OnMouseMoveなどを使用します。 タッチでは、コンピュータがタッチ位置を取得するのが非常に難しいと思われます。また、2つの指で同時に2つの異なるボタンを移動すると、巨大なラグがあります。私が使用し、マウスで、我々は位置を取得する必要があるときにマウスとタッチの唯一の違いはある

...などOnTouchDown、OnTouchMoveを使用します(eはMouseButtonEventArgsある)

Point currentPosition = e.GetPosition(this); 
私が使用してタッチで

:(eはTouchEventArgsである)、この後

Point currentPosition = e.GetTouchPoint(this).Position; 

すべてが同じです。

私のアプリケーションではコントロールが多すぎます(5000を超える操作は可能ですが、2つのコントロールだけをズームインすると同じことです)か、それとも本当に難しいタッチイベントから位置を取得するコンピュータ....

誰かが私を助けることができますか?遅れを解消するための解決策を見つける必要があります。

私は、Visual Studio 2010を使用

、4ブレンド、.NET 4.0 のWindows 7 64ビット 7 GBのRAM Xeonプロセッサ2.13 GHzの、2コア、8スレッド 画面:NEC 2490WUXi2画面でELO技術、

+11

すべてがマウスでうまく動作し、あなたがコントロールを操作する任意の遅延を持っていない場合、私は犯人がタッチデバイスドライバであると言うでしょう。私はそれが指の速度に追いつくことができないと思うので、あなたが気づいている遅れを導入することができないと思う。私は特定のタッチハードウェアでこの問題を見てきましたが、他のタッチハードウェアを完璧な応答性で使用していましたので、問題はWPFやタッチ自体とは何の関係もなく、デバイス。 – Murven

+1

Microsoft Surface SDKに付属のMicrosoft Touch Simulatorを試してみることをお勧めします。 これは、Murvenが言いましたように、その意味でマウスで動作します。シミュレータを使用してタッチイベントを受信して​​応答するのに遅れがなければ、遅れはマルチタッチドライバから発生します。 – Khaliloz

+0

OnTouchMoveイベントとOnMouseMoveイベント言い換えれば、OnTouchMoveは1秒間に1,000回トリガーされますが、OnMouseMoveは1秒間に10回トリガーされますか? – Snixtor

答えて

3
+0

共有することができない! – mlemay

+1

https://connect.microsoft.com/VisualStudio/feedback/details/782456/wpf-touch-event-fires-with-delay このバグを修正してください! – Andreas

1

あなたはなぜこのような問題があるのか​​は言い難い - OnTouchMoveがMouseMoveより頻繁にトリガーされ、タッチ位置データを滑らかにするためにいくつかの追加の処理を作成する必要があるかもしれない。 私は の下のすべてのコードにコメントしようとしています。ポイントcurrentPosition = e.GetTouchPoint(this).Position;

と性能を見てください。

もう1つの方法は、OnTouchMoveがどのくらいトリガーされたかをカウントすることです。

1

問題はタッチデバイスですが、遅延がまだ存在するかどうかを確認するもう1つを試してください。

+0

あなたはなぜMurvenに受け入れられた答えをさせませんか?これは彼がすでにコメントで言ったことです。 –

+0

彼は答えを書いていない、私は – mlemay

関連する問題