如何在仅由线组成的封闭形状内进行命中测试(无填充)

时间:2011-09-11 19:23:32

标签: c# .net wpf system.drawing

怎么做?该图是DrawingVisual的一个实例,DrawingContext.DrawLine用于绘制闭合的形状。

作为临时解决方案,我画了一条几乎看不见的半透明线,其厚度等于整个形状的厚度。这样它就可以响应命中测试。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:0)

如果你的形状是凸的,那么对于你塑造的每个部分(A; B),你必须做到以下几点:

  • 构建三维矢量矢量MA(M是点击位置,A是当前线段的第一个点)。
  • 构建三维矢量BA(B是当前段的第二个点,A是当前段的第一个点)
  • 计算点积MA + BA,如果结果矢量的方向对于您的点在形状中的所有线段始终相同。

如果你的形状不是凸面,你必须首先将它分成凸形,然后在每个凸形上应用前一个方法。

答案 1 :(得分:0)

这个评论是正确答案:

  

我打算建议使用封闭边框并使用命中测试   在那之上。但你有点实现同样的事情。 (AngelWPF