在iOS上,如何用大纲填充路径? (或填充和描边路径)

时间:2012-08-14 22:06:03

标签: iphone ios ipad core-graphics

在iOS上,如果我们这样做

CGContextMoveToPoint(contextFoo, 0, 0);
CGContextAddLineToPoint(contextFoo, x, y);
CGContextAddLineToPoint(contextFoo, x2, y2);
// ... and many more CGContextAddLineToPoint

然后在此之后,如果我们执行CGContextStrokePath,我们会得到一个大纲,或者如果我们CGContextFillPath,我们会得到“填充”,但我们不能同时执行这两个,因为中风或填充,“当前路径”消失了。我们如何填充和描边路径(例如想要黄色填充和橙色轮廓)?

我们可以将MoveToAddLine调用移动到一个函数,并调用该函数,进行填充,然后再次调用该函数,并执行一次中风,但有很多{{1和x使得将它们全部传递给函数非常麻烦。可能有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

CGContextDrawPath(context, kCGPathFillStroke);
// to both Fill and Stroke your context
// or kCGPathFill/kCGPathStroke to only fill/stroke

您可以使用以下方法保存您的路径btw(以便将其重复用于多个相同形状的物品):

CGPathBeginPath / MoveToPoint / AddLine / ...非常类似于CGContext /...

对于你的例子:

[[UIColor yellowColor] setFill];                      
[[UIColor orangeColor] setStroke];

CGContextDrawPath(context, kCGPathFillStroke);