【问题标题】:Get union of the frames of several transformed UIImageViews?获得几个转换后的 UIImageViews 的框架的联合?
【发布时间】:2009-11-04 09:56:24
【问题描述】:

我收集了大约 10 个重叠的 UIImageView。每个都是矩形,但每个都单独旋转和缩放。是否有任何核心图形技巧可以围绕所有图像的周边绘制路径?

CGRectUnion 可能会给我一个包含所有视图的矩形(尽管我隐约记得一旦将变换应用于视图,框架是未定义的)但我试图完成的最终结果应该是一个相当复杂的多边形而不是一个简单的矩形。

【问题讨论】:

    标签: cocoa cocoa-touch core-graphics quartz-graphics


    【解决方案1】:

    您可以使用 -convertRect:fromView: 方法在各个视图的坐标空间之间进行转换。你说视图重叠,但你没有提到视图层次结构是什么样的。

    如果他们都是同龄人并且拥有相同的超级视图,那么找到联合矩形应该不会很棘手。如果视图层次结构更复杂,您可能需要先将它们转换为基本坐标。

    要处理旋转,您可以将有问题的矩形分解为点,并使用 -convertPoint:fromView: 代替。

    一旦你得到这些信息,你想做什么?

    【讨论】:

    • 我应该提到所有有问题的视图都是同一个超级视图的对等体。也许您可以解释如何使用 convertPoint:fromView: 代替?最终目标是围绕重叠的 UIImageViews 的 PERIMETER 绘制一个路径。 ±10 个 UIImageViews 全部接触这将是一个相当复杂的多边形路径。
    • CoreGraphics 不提供任何函数来提取复杂的自相交路径的周长。这是一个不平凡的问题。如果您尝试勾勒出的视图是不透明的,您可以通过在每个视图的框架周围绘制并让视图遮挡将相交的矩形部分来获得您想要的效果。
    猜你喜欢
    • 2015-07-19
    • 2017-08-28
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多