是否可以在 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);
请注意,如果您想绘制一个饼形楔形,则只需用 CGContextMoveToPoint(cx,cy) 和 CGContextAddLineToPoint(cx,cy) 围绕“CGContextAddPath”调用,并使用 CGContextFillPath 而不是 CGContextStrokePath。(或者如果你想同时填充和描边,使用 CGContextDrawPath。)
于 2012-08-28T03:38:56.173 回答