Macos CGPathRef到CGRect集

Macos CGPathRef到CGRect集,macos,algorithm,cocoa,quartz-graphics,quartz-2d,Macos,Algorithm,Cocoa,Quartz Graphics,Quartz 2d,我正在寻找一些算法或方法,甚至是一些参考,它们可以让我从CGPathRef生成一组矩形 考虑以下情况: 在路径中添加一个矩形 在上面的例子中,我们只有一个矩形存储在path中,所以当我们填充它时,只绘制一个矩形,因此算法返回1个矩形 将圆/椭圆添加到路径 在这种情况下,我们将圆存储在路径中,所以当我们绘制它时,我们可以想象许多可重定位项被填充,因此算法返回n个矩形 更复杂的路径 CGMutablePathRef pathref = CGPathCreateMutable(); CGPathAdd

我正在寻找一些算法或方法,甚至是一些参考,它们可以让我从CGPathRef生成一组矩形

考虑以下情况:

在路径中添加一个矩形

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

将圆/椭圆添加到路径

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

更复杂的路径

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

在上面的问题中,我主要对填充感兴趣,可能以后我也会有关于stroke的工作。希望类似于填充的方法也能起作用


有人能指导我如何做到这一点吗?

看看这篇博文。其中的主要例程是
copyrectangularpath:height:
,它采用(几乎)任意路径,并返回一个给定高度的矩形路径数组,该数组将填充该路径。“几乎”是因为正如所写的,它不能处理需要在同一行上不相交的多个矩形的路径。不过,此代码可以扩展以支持这些类型的形状。

请看这篇博文。其中的主要例程是
copyrectangularpath:height:
,它采用(几乎)任意路径,并返回一个给定高度的矩形路径数组,该数组将填充该路径。“几乎”是因为正如所写的,它不能处理需要在同一行上不相交的多个矩形的路径。不过,此代码可以扩展以支持这些类型的形状。

谢谢,这正是我所需要的。我确实需要在同一条线上有多个不相交的矩形,但我可以延迟这一部分,直到我真正面对这种情况。再次感谢!谢谢,这是我需要的。我确实需要在同一条线上有多个不相交的矩形,但我可以延迟这一部分,直到我真正面对这种情况。再次感谢!
CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);
CGMutablePathRef pathref = CGPathCreateMutable();
CGPathAddRect(pathref, NULL, CGRectMake(10, 10, 200, 300));
CGPathAddEllipseInRect(pathref, NULL, CGRectMake(10, 10, 500, 500));
CGPathCloseSubpath(pathref);