我正在寻找一些算法或某种方法甚至一些参考资料,这些参考资料可以让我从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);
在这种情况下,我们将圆存储在路径中,因此当我们绘制它时,我们可以想象许多零件被填充填充,因此算法返回n个rects。
更复杂的路径
CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddRect(pathref, NULL, CGRectMake(10, 10, 200, 300));
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);
等等。
在上面的问题中,我主要对填充感兴趣,可能以后我也会有中风工作。希望与填充相似的方法应该有效。
有人可以指导我如何实现这一目标吗?
答案 0 :(得分:1)
查看博文Wrapping text around a shape with CoreText。其中的主要例程是copyRectangularPathsForPath:height:
,它采用(几乎)任意路径并返回给定高度的矩形路径数组,以填充它。 “几乎”是因为写入时,它无法处理在同一行上需要不相交的多个矩形的路径。不过,可以扩展此代码以支持这些形状。