3

明らかに、この質問に対する率直な答えは「いいえ」ですが、そのような効果を達成するための最善の方法は何ですか? 説明するために、ここに少し背景があります...

画像と、その画像に重ねられた形状のレイヤーをいくつか表示するアプリがあります。これらはすべてグリッド セル内に配置され、相互に重なり合い、ローカルの z オーダーの下部に画像が配置されます。速度を上げるために、オーバーレイは FrameworkElement から派生したクラスとして実装され、独自のビジュアルを作成および管理します。

これは、レイヤーがどのように配置され、どのような相互作用が必要かを示す基本的な図 (3D に分解されていますが) です。


overlapped_controls.png http://www.afterbang.co.uk/mal/stackoverflow/overlapped_controls.png


ご覧のとおり、上部のオーバーレイでは、ユーザーが画像内の任意の場所に新しい四角形をドラッグできるようにする必要があります。そのために、透明な背景を与えて、描画できるガラス板のように機能させました。これの明らかな欠点は、すべてのマウス イベントが下のレイヤーに渡されなくなることです。

マウスの左ボタンのイベントを一番上のレイヤーの透明な領域にトラップし、他のイベントが z オーダーのさらに下のレイヤーにヒットするようにしたいと本当に思っています。

この種のものに従うべきWPF志向のパターンはありますか?ベストプラクティスやテクニックはありますか?

私はまだ WPF に慣れていませんが、API に合わせたソリューションを作成したいと考えています。ありがとう。

4

1 に答える 1

1

PreviewMouseDown右クリックする必要がある要素でイベントを使用しLeftMouseDown、左クリックする必要がある要素で使用します。イベントは引き続き発生しますが、PreviewMouseDown左クリックを無視するようにハンドラーを作成できます。

これは、ユーザーが画像の一部を丸で囲んで強調表示できるように、画像の上に図形を表示するために実際に使用しているパターンです。私はPreviewMouseDown画像上にあり、それは常に正常に機能します。次に、LeftMouseDown任意の形状にハンドラーを配置して、移動、削除などを行えるようにします。

于 2010-01-18T17:50:31.630 に答える