12

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

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

谢谢。伊莱

4

2 回答 2

17

您可以使用该Rect.IntersectsWith方法

于 2009-10-12T12:06:41.510 回答
4

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

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

于 2009-10-12T12:02:23.597 回答