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

Eli*_*yal 11 wpf canvas overlap collision drag

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

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

谢谢.礼

Tho*_*que 17

您可以使用该Rect.IntersectsWith方法


bit*_*onk 4

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

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