我的Windows应用商店项目可以使用Canvas
在ManipulationDelta
上移动控件。我想创建“可附加”控件,当您将控件拖到Canvas
上的另一个控件上时,在其中一个上应用的旋转变换也将应用到另一个上。
最简单的碰撞检测是检查两个控件的矩形是否相交,但是因为它们可以旋转任何不可能的角度。
如何做到这一点?
答案 0 :(得分:1)
您可以使用Intersect
类的Windows.Foundation.Rect
方法来确定元素是否具有共同点。
使用我的例子:
private Rect DetectCollisions(FrameworkElement rect1, FrameworkElement rect2)
{
var r1 = new Rect(Canvas.GetLeft(rect1), Canvas.GetTop(rect1), rect1.ActualWidth, rect1.ActualHeight);
var r2 = new Rect(Canvas.GetLeft(rect2), Canvas.GetTop(rect2), rect2.ActualWidth, rect2.ActualHeight);
r1.Intersect(r2);
return r1;
}
在此示例中,2个Rect
个对象是从2个传入的FrameworkElement
个对象创建的。
然后我们使用Intersect
首先Rect
的方法来确定rects是否有共同点。
如果是这样,方法会将新的交集Rect
存储到r1
变量,而不是它返回Rect.Empty
结构。