我正在寻找一些算法或某种方式,甚至一些引用,使我能够从cgpathref生成一组矩形。
考虑以下情况:
在路径中添加矩形

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

在上面的例子中,我们只有一个矩形存储在path中,所以当我们填充它时,只绘制一个矩形,因此算法返回1个矩形。
向路径添加圆/椭圆
CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);

在这种情况下,我们在路径中存储了一个圆,所以当我们绘制它时,我们可以想象许多可重取文件被填充,因此算法返回n个矩形。
更复杂的路径
CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddRect(pathref, NULL, CGRectMake(10, 10, 200, 300));
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);

等等。
在上面的问题我主要感兴趣的是填补,也许以后我也会有中风的工作希望类似的填充方法也能起作用。
有人能告诉我怎样才能做到这一点吗?

最佳答案

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

关于macos - CGPathRef到CGRects的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18768571/

10-09 13:00