2

画像のブロックがあり (これらの画像は境界線コントロールに埋め込まれています)、それらは 4 行 4 列に配置されています。ユーザーがある画像から別の画像に左から右、右から左、または斜めにスワイプすると、それらのすべての画像が横断されたものを知りたいですか?

MouseEnter および MouseLeave イベントが見つかりました。しかし、ユーザーが image1 (行 1) に触れ、スワイプを image4 にドラッグすると、ユーザーがスワイプを完了したかどうかをどのように知ることができますか? image4 でマウスを離した後、ユーザーが画面上の任意の場所に触れる可能性があるためです。

これらのトラバースされた画像をキャプチャする最良の方法は何ですか? リストまたは辞書?

4

1 に答える 1

1

この記事によると...... http://msdn.microsoft.com/en-us/library/system.windows.uielement.mouseleftbuttondown( v = vs.95).aspx

MouseLeftButtonDownイベントを使用して、マウススワイプが開始されたタイル/正方形を検出できます。

そして、記事にあるように、ユーザーがさまざまなオブジェクト間でマウスをスワイプすると...

LeftMouseButtonUpイベントは実行されますが、LeftMouseButtonDownは、別の正方形/タイル/画像で発生した実際のダウンイベントと同じタイルに対して実行されます

したがって、SWIPE YES /MO値を保持する単純な4x4マトリックス/配列がある場合...1またはyesのように、マウスはこの要素をスワイプし、0NOマウスはこのタイル/画像/要素を決して操作しません...元気に...

そして、昔ながらのルールを使って…。

X1> X2の場合、マウスの移動は右から左(左への移動)でした。

X2> X1の場合、マウスの移動は左から右(右への移動)でした

Y1> Y2の場合、マウスの動きは下から上になります(上に移動)

Y2> Y1の場合、マウスの動きは上から下(下に移動)でした

そして、斜めの動き/スワイプのルールを組み合わせてください。

ここで、X1、Y1はMouseDown画面の値であり、X2、Y2はMouseUp画面の値です。

編集

備考欄の文章によると...

引用

MouseLeftButtonDownイベントは、マウスポインターがUIElement上にあるときに、マウスの左ボタンが押されたとき(または、スタイラスの先端がタブレットPCに触れたとき)に発生します。マウスボタン(またはスタイラスの先端)を離すと、MouseLeftButtonUpイベントが発生します。ただし、ボタンを離したときにマウスポインタ(またはスタイラス)を別のオブジェクト上に移動すると、MouseLeftButtonDownイベントを受信したUIElementは、そのUI要素が明示的にマウスをキャプチャした場合にのみMouseLeftButtonUpイベントを受信します。個別のダブルクリックイベントはありません。ダブルクリックは、MouseLeftButtonDownイベントとMouseLeftButtonUpイベントの2つのシーケンスで構成されます。クリック数は、イベントデータ(ClickCount)を使用して取得できます。

このイベントを処理するには、MouseButtonEventHandlerに基づくハンドラーを使用します。マウスイベントの処理方法の詳細については、「マウスのサポート」を参照してください。

マウスキャプチャは、マウスポインタ(またはスタイラス)がオブジェクトの境界領域上にない場合でも、オブジェクトがマウスイベントを受信し続けることができるという概念です。マウスのキャプチャを要求するには、マウスの左ボタン(またはスタイラス)が押された(下の)状態である必要があります。したがって、CaptureMouseを呼び出すコードの一般的なポイントは、特定のUIElementのMouseLeftButtonDownハンドラー内からです。マウスキャプチャとそれが役立つシナリオの詳細については、「マウスのサポート」または「方法:UIレイアウトでオブジェクトをドラッグアンドドロップする」を参照してください。

見積もりの​​終わり

申し訳ありませんが、私の最初の解決策とは反対に、マウスキャプチャを開始する3番目の段落は概念ですが、コメントを読み間違えたに違いありません。これは、MOUSEDOWNイベントを意味するmouseeventを呼び出し、それはORIGINALコントロールからのものであるため、control1からスワイプを開始し、Control1 MouseLeftButtonDownイベントが発生すると、マウスをキャプチャする必要があります(マウスキャプチャとそのシナリオの詳細については便利です。マウスのサポートまたは方法を参照してください。UIレイアウトでオブジェクトをドラッグアンドドロップします)次に、control2をスワイプし、指/ポインター/スタイラスがcontrol3を超えたときにマウスを離すと、マウスをキャプチャしたCONTROL(この場合はcontrol1)に対してORIGINALCAPTUREDmouseupイベントが発生します。 )画面のX/Y位置とコントロールのX/Y / Width / HEIGHTプロパティを使用して、マウスがリリースされたコントロールのOVERを評価できるはずです。

もっと時間があれば、もっと丁寧に読んで、正しい情報ではなくほぼ正しい情報を提供することから自分自身を救ったでしょう。記事を注意深く読み、マウスキャプチャプロセスに従って、それを試してみることをお勧めします。別のコントロール上にある場合でも、マウスを離すと、マウスをキャプチャしたCONTROLに対して実際のmouseupイベントが発生します。

私の以前の間違いについても申し訳ありません-それはあなたが読むことをスキップしたときに起こることです。

于 2013-01-01T02:32:13.570 に答える