2009-10-12 5 views
9

私は、ユーザーが画面上でコントロールをドラッグできるようにするデザイナーを書いています。 1つのコントロールをドラッグしているときに、コントロールが別のコントロールと重なっているかどうかを検出する最良の方法は何ですか?WPFで2つのコントロールがキャンバス上で重なり合っているかどうかを確認するにはどうすればよいですか?

FrameworkElementの寸法を取得し、他の要素の寸法をチェックし続けるだけでいいですか?

ありがとうございました。 イーライ

+1

は境界長方形が重なった場合、あなたが知りたいですRect.IntersectsWith方法、または可視領域を使用することができますか?例えば、2つの楕円は、重なり合う境界矩形を有することができるが、実際の楕円は触っていないことさえある。 –

答えて

4

彼らは常に長方形であるならば、あなたの要素の寸法(FrameworkElement.ActualWidth FrameworkElement.ActualHeight)とpostion(Canvas.Top、Canvas.Bottom、Canvas.Left、Canvas.Right)が十分であろう。その場合、2つの矩形が重なっているかどうかを簡単に計算できます。要素がより複雑な形状になることができれば、それは毛むくじゃらします。 WPFで2つのVisualインスタンスの交差をテストできるかどうかはわかりません。

多分hittestingを使用できますか?この方法では、特定のpointまたはgeometryが証明書のビジュアルと交差するかどうかを少なくともテストできます。したがって、ジオメトリやポイントリストを定義して、2番目のビジュアルの境界に多かれ少なかれ一致させる必要があります。

17

あなたが

+1

WinRT Metroアプリケーションでは、交差点がない場合は空白の矩形を与えるRect.Intersectと、交差点がない場合は実際の結果が得られるRect.Intersectもあります。 –

+1

Tks Den!私はWinRTのためにこれを探していました。 – andrecarlucci

関連する問題