【发布时间】:2015-01-14 05:46:47
【问题描述】:
我有两个 UIBezierPaths,一个是用户在触摸后输入的,另一个是预制的。我希望能够检查用户的 UIBezierPath 是否完全覆盖了预制的。
我真的不知道该怎么做,所以我想看看是否有人对我如何做到这一点有任何想法。
【问题讨论】:
标签: ios objective-c quartz-graphics uibezierpath
我有两个 UIBezierPaths,一个是用户在触摸后输入的,另一个是预制的。我希望能够检查用户的 UIBezierPath 是否完全覆盖了预制的。
我真的不知道该怎么做,所以我想看看是否有人对我如何做到这一点有任何想法。
【问题讨论】:
标签: ios objective-c quartz-graphics uibezierpath
这很难,因为 1 条路径的边界可能完全包围另一条路径的边界,但实际上并没有覆盖它的内容,例如:蓝色路径的边界(绿色)大于黑色路径的边界,因为它没有实际上完全封闭它。
一种全面检查的方法,尽管它不会非常快: 1.创建一个新的图形上下文并用白色填充背景 2.填充你想被黑色包围的路径 3.用白色填充你想要做封闭的路径(用户绘制的路径) 4. 检查是否有黑色像素。
这样做会使正方形的四个角充满黑色,因此您可以在检查这些像素时检测到这一点
第 4 步需要一两秒钟。您可以通过检查每 2 或 4 个像素或其他内容来加快速度,或者减小您创建的上下文的大小。
只要您仅在用户完全完成他们的路径后才执行此操作,那么您可能可以获得足够快的性能,但我想在绘图期间执行此操作会非常滞后。
【讨论】:
我认为有两种方法:
【讨论】: