5
CoreGraphicsでSVGパスのような楕円弧を描くことは可能ですか?CoreGraphicsで楕円弧を描く方法は?
CoreGraphicsでSVGパスのような楕円弧を描くことは可能ですか?CoreGraphicsで楕円弧を描く方法は?
私は今夜同じことに遭遇しました。 CGは非円弧を描く簡単な方法を提供しませんが、CGPathと適切な変換行列を使用して行うことができます。左上、上端、および幅、高さのサイズで始まる軸に揃えられた楕円の弧が必要であるとします。そして、あなたはこのような何かを行うことができます。
あなたはパイ形のウェッジを描きたい場合は、単に「CGContextAddPath」(CY、CX)CGContextMoveToPointで呼び出し、CGContextAddLineToPoint(CXを囲むことCGFloat cx = left + width*0.5;
CGFloat cy = top + height*0.5;
CGFloat r = width*0.5;
CGMutablePathRef path = CGPathCreateMutable();
CGAffineTransform t = CGAffineTransformMakeTranslation(cx, cy);
t = CGAffineTransformConcat(CGAffineTransformMakeScale(1.0, height/width), t);
CGPathAddArc(path, &t, 0, 0, r, startAngle, endAngle, false);
CGContextAddPath(g->cg, path);
CGContextStrokePath(g);
CFRelease(path);
注意、 cy)を使用し、CGContextStrokePathではなくCGContextFillPathを使用します。 (または、同時に塗りつぶしてストロークしたい場合は、CGContextDrawPathを使用してください)
素晴らしい作品 - NB:私が作った間違いをしないでください:) MoveToPointを使用していてもCGAffineTransformMakeTranslationが必要です*(カーブが原点にある間に変換tを適用しなければならない、そうでなければAppleのスケール変換も原点からオフセットを掛けます) – Adam
ストロークの幅をスケールします。 – Grodriguez