CoreGraphics で SVG パスのような楕円弧を描くことは可能ですか?
質問する
1883 次
1 に答える
8
私は今夜同じことに遭遇しました。CG では、非円形の円弧を簡単に描画する方法は提供されませんが、CGPath と適切な変換行列を使用して描画できます。左、上から始まり、幅、高さのサイズの軸に沿った楕円の円弧が必要だとします。次に、次のようなことができます。
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);
パイ型のくさびを描画する場合は、「CGContextAddPath」呼び出しを CGContextMoveToPoint(cx,cy) と CGContextAddLineToPoint(cx,cy) で囲み、CGContextStrokePath の代わりに CGContextFillPath を使用することに注意してください。(または、塗りつぶしとストロークを同時に行いたい場合は、CGContextDrawPath を使用します。)
于 2012-08-28T03:38:56.173 に答える