C# 一段路径的WPF路径检测

C# 一段路径的WPF路径检测,c#,wpf,xaml,collision-detection,collision,C#,Wpf,Xaml,Collision Detection,Collision,正如Clemens()所回答的,可以检测路径何时与此代码接触/重叠: var intersectionDetail = path1.Data.FillContainsWithDetail(path2.Data); if (intersectionDetail != IntersectionDetail.NotCalculated && intersectionDetail != IntersectionDetail.Empty) { // collision }

正如Clemens()所回答的,可以检测路径何时与此代码接触/重叠:

var intersectionDetail = path1.Data.FillContainsWithDetail(path2.Data);

if (intersectionDetail != IntersectionDetail.NotCalculated &&
    intersectionDetail != IntersectionDetail.Empty)
{
    // collision
}

是否可以使用路径的一部分执行此操作?或者我需要将路径拆分为两个单独的路径并分别使用它们吗?

经过几个小时的尝试,拆分路径似乎是最好的方法(而且确实有效)。我将路径拆分为一个已知位置,并像以前一样使用代码-但已更新以使用以下两个:

var intersectionDetail1 = path1.Data.FillContainsWithDetail(path2.Data);
var intersectionDetail2 = path1.Data.FillContainsWithDetail(path3.Data);

if (intersectionDetail1 != IntersectionDetail1.NotCalculated &&
    intersectionDetail1 != IntersectionDetail1.Empty)
{
    // collision with path part 1
}

if (intersectionDetail2 != IntersectionDetail2.NotCalculated &&
    intersectionDetail2 != IntersectionDetail2.Empty)
{
    // collision with path part 2
}

在本例中,原始路径中的路径2已拆分为路径2和路径3。如果path1与其中任何一个发生冲突,则会单独检测它们。

具体取决于您正在执行的操作,这可能不是“最佳”方法。对于我们的地图编辑器应用程序,我需要找出哪些点落在用户绘制的形状内。我发现最有效的解决方案是在屏幕外渲染形状,然后迭代像素。您可以进行渲染,使得只有在两个形状重叠的地方才能显示任何内容。它可以处理许多形状,复杂的形状等等。这当然对你来说是完全无用的。但您可以计算出两个形状的边界框,以最小化您感兴趣的位置或它们是否可能重叠。