如何在WPF中检查两个控件是否在画布上相互重叠?

时间:2009-10-12 11:50:28

标签: wpf canvas drag collision overlap

我正在编写一个设计器,使用户可以在屏幕上拖动控件。 当我拖动一个控件时,检测控件是否与另一个控件重叠的最佳方法是什么?

我应该只获取FrameworkElement的尺寸并继续检查其他元素的尺寸吗?

感谢。 利

2 个答案:

答案 0 :(得分:17)

您可以使用Rect.IntersectsWith方法

答案 1 :(得分:4)

如果元素始终为矩形,则元素的维度(FrameworkElement.ActualWidth FrameworkElement.ActualHeight)和postion(Canvas.Top,Canvas.Bottom,Canvas.Left,Canvas.Right)就足够了。在这种情况下,您可以轻松计算两个矩形是否重叠。如果你的元素可能是更复杂的形状,它会变得毛茸茸。我不知道我是否可以在WPF中测试两个Visual实例的交集。

也许我们可以使用hittesting?使用这种方法,您至少可以测试某个pointgeometry是否与certian视觉相交。因此,您必须定义几何或点列表,这些点或多或少与第二个视觉的边界匹配。