【问题标题】:Detect if UIBezierPath is visible检测 UIBezierPath 是否可见
【发布时间】:2015-01-14 05:46:47
【问题描述】:

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

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

【问题讨论】:

    标签: ios objective-c quartz-graphics uibezierpath


    【解决方案1】:

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

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

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

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

    只要您仅在用户完全完成他们的路径后才执行此操作,那么您可能可以获得足够快的性能,但我想在绘图期间执行此操作会非常滞后。

    【讨论】:

      【解决方案2】:

      我认为有两种方法:

      1. 检查两条贝塞尔曲线的边界。如果边界不匹配,则可以肯定没有完全覆盖。如果匹配,则不能保证完全覆盖。
      2. 对几个随机选择的点进行命中测试。这不是确定性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-14
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 2016-05-24
        • 2012-02-08
        相关资源
        最近更新 更多