【问题标题】:CGPathRef to set of CGRectsCGPathRef 到一组 CGRects
【发布时间】:2013-09-12 15:35:36
【问题描述】:

我正在寻找一些算法或某种方式,甚至是一些可以让我从 CGPathRef 生成矩形集的参考。

考虑以下情况:

在路径中添加一个矩形

CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddRect(pathref, NULL, CGRectMake(10, 10, 200, 300));
CGPathCloseSubpath(pathref);

在上面的例子中,我们只有一个矩形存储在路径中,所以当我们填充它时,只有一个矩形被绘制,因此算法返回 1 个矩形。

将圆/椭圆添加到路径

CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);

在这种情况下,我们将圆存储在路径中,所以当我们绘制它时,我们可以想象很多 retables 被填充填充,因此算法返回 n 个矩形。

更复杂的路径

CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddRect(pathref, NULL, CGRectMake(10, 10, 200, 300));
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);

等等。

在上面的问题中,我主要对填充感兴趣,可能以后我也会有中风的工作。希望与填充类似的方法应该有效。

有人可以指导我如何实现这一目标吗?

【问题讨论】:

    标签: macos algorithm cocoa quartz-graphics quartz-2d


    【解决方案1】:

    查看博文Wrapping text around a shape with CoreText。其中的主要例程是copyRectangularPathsForPath:height:,它采用(几乎)任意路径并返回给定高度的矩形路径数组,以填充它。 “几乎”是因为如所写,它无法处理需要在同一行上不相交的多个矩形的路径。不过,可以扩展此代码以支持这些形状。

    【讨论】:

    • 谢谢,这是我需要的。我确实需要在同一行上不相交的多个矩形,但我可以延迟那部分直到我真正面对这种情况。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多