5
在CoreGraphics中可以绘制像SVG路径一样的椭圆弧吗?如何用CoreGraphics绘制椭圆弧?
在CoreGraphics中可以绘制像SVG路径一样的椭圆弧吗?如何用CoreGraphics绘制椭圆弧?
今晚我碰到了同样的事情。 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),并使用CGContextFillPath而不是CGContextStrokePath。 (或者如果你想同时填充和描边,使用CGContextDrawPath。)
工程很棒 - 注意:不要犯我犯的错误:)。即使您使用MoveToPoint,CGAffineTransformMakeTranslation也是必需的(因为变换t必须在曲线位于原点时应用,否则Apple的比例变换也会将您的偏移量与原点相乘) – Adam 2013-02-18 12:30:45
请注意,缩放笔画宽度。 – Grodriguez 2017-11-23 09:33:18