我正在编写一个设计器,使用户能够在屏幕上拖动控件。当我拖动一个控件时,检测一个控件是否与另一个控件重叠的最佳方法是什么?
我应该只获取 FrameworkElement 的尺寸并继续检查其他元素的尺寸吗?
谢谢。伊莱
您可以使用该Rect.IntersectsWith
方法
如果元素始终为矩形,则元素的尺寸(FrameworkElement.ActualWidth FrameworkElement.ActualHeight)和位置(Canvas.Top、Canvas.Bottom、Canvas.Left、Canvas.Right)就足够了。在这种情况下,您可以轻松计算两个矩形是否重叠。如果你的元素可以是更复杂的形状,它会变得毛茸茸的。我不知道是否可以在 WPF 中测试两个 Visual 实例的交集。
也许我们可以使用命中测试?使用这种方法,您至少可以测试某个点或几何图形是否与特定视觉相交。因此,您必须定义几何或点列表,或多或少与您的第二视觉的边界匹配。