检测UIBezierPath是否可见

时间:2015-01-14 05:46:48

标签: ios objective-c quartz-graphics uibezierpath

我有两个UIBezierPaths,一个是用户在触摸后输入的,另一个是预先制作的。我希望能够检查用户的UIBezierPath是否完全覆盖预制的

我真的不知道如何做到这一点,所以我想知道是否有人对我如何做到这一点有任何想法。

2 个答案:

答案 0 :(得分:1)

这很难,因为1条路径的边界可能完全包围另一条路径的边界但实际上并未覆盖它的内容,例如:蓝色路径的边界(绿色)是大于黑色路径的边界,它实际上并没有完全包围它。

overlapping paths

完全检查的一种方法,虽然它不会非常快: 1.创建一个新的图形上下文并用白色填充背景 2.填充要用黑色包围的路径 3.用白色填充您想要封闭的路径(用户的绘制路径) 4.检查是否有黑色像素。

这样做会使正方形的四个角落充满黑色,因此当您检查这些像素时可以检测到

步骤#4需要一两秒钟。您可以通过检查每个第2或第4像素或其他内容,或减小您创建的上下文的大小来加快速度。

只要你只在用户完成了他们的路径后才这样做,那么你可以足够快地获得性能,但是在绘图期间这样做会让我感觉非常好。

答案 1 :(得分:0)

我认为有两种方法:

  1. 检查两条贝塞尔曲线的界限。如果边界不匹配,则确定没有完全覆盖。如果匹配,则无法保证完全覆盖。
  2. 点击几个随机选择点的测试。它不是确定性的。