2009-10-12 64 views
9

我在寫一個設計器,讓用戶可以在屏幕上拖動控件。 當我拖動一個控件時,檢測控件是否與另一個控件重疊的最佳方法是什麼?如何檢查2個控件是否在WPF中的canvas上重疊?

我應該只是得到FrameworkElement的維度,並繼續檢查其他元素的維度?

謝謝。 禮

+1

做,或者可見區域?例如,兩個橢圓可能有重疊的邊界矩形,但實際的橢圓甚至可能不會觸及。 – 2009-10-12 13:05:28

回答

4

,如果他們總是矩形的元素的尺寸(FrameworkElement.ActualWidth FrameworkElement.ActualHeight)和現在的位置(Canvas.Top,Canvas.Bottom,Canvas.Left,Canvas.Right)就足夠了。在這種情況下,您可以輕鬆計算兩個矩形是否重疊。如果你的元素可以是更復雜的形狀,它會變得毛茸茸的。我不知道我是否可以測試WPF中兩個Visual實例的交集。

也許我們可以用hittesting?通過這種方法,您至少可以測試某個pointgeometry是否與certian視覺相交。所以你必須定義一個或多或少緊密匹配第二視覺邊界的幾何或點列表。

17

可以使用Rect.IntersectsWith方法你想知道,如果邊界矩形重疊

+1

對於WinRT Metro應用程序,還有Rect.Intersect,如果不存在交集,則會給出一個空矩形,並在存在時給出實際結果。 – 2012-06-05 16:11:50

+1

Tks Den!我正在爲WinRT尋找這個。 – andrecarlucci 2012-08-31 23:27:22

相關問題