1

我正在寻找一些算法或某种方式,甚至是一些可以让我从 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 个矩形。

更复杂的路径

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

等等。

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

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

4

1 回答 1

1

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

于 2013-09-12T16:11:30.750 回答