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