在iOS上,如果我们这样做
CGContextMoveToPoint(contextFoo, 0, 0);
CGContextAddLineToPoint(contextFoo, x, y);
CGContextAddLineToPoint(contextFoo, x2, y2);
// ... and many more CGContextAddLineToPoint
然后在此之后,如果我们执行CGContextStrokePath
,我们会得到一个大纲,或者如果我们CGContextFillPath
,我们会得到“填充”,但我们不能同时执行这两个,因为中风或填充,“当前路径”消失了。我们如何填充和描边路径(例如想要黄色填充和橙色轮廓)?
我们可以将MoveTo
和AddLine
调用移动到一个函数,并调用该函数,进行填充,然后再次调用该函数,并执行一次中风,但有很多{{1和x
使得将它们全部传递给函数非常麻烦。可能有什么方法可以做到这一点?
答案 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);