0

iOSの場合、

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

この後、を実行するCGContextStrokePathとアウトラインが取得され、を実行するCGContextFillPathと「塗りつぶし」が取得されますが、ストロークまたは塗りつぶしの後、「現在のパス」が失われるため、両方を実行することはできません。パスを塗りつぶしてストロークするにはどうすればよいですか(黄色の塗りつぶしとオレンジ色の輪郭が必要な場合など)。

MoveToAddLine呼び出しを関数に移動し、その関数を呼び出し、塗りつぶしを実行し、関数を再度呼び出してストロークを実行することはできますが、多くxy場合、それらすべてを関数に渡すのは非常に面倒です。これを行うためのいくつかの方法は何でしょうか?

4

1 に答える 1

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

次を使用して、パスを保存できます(同じ形状の複数のものに再利用するため)。

CGPathBeginPath/MoveToPoint/AddLine/... CGContext/... と非常によく似ています。

あなたの例:

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

CGContextDrawPath(context, kCGPathFillStroke);
于 2012-08-14T22:25:21.377 に答える