如何从顶部开始绘制一个圆圈

时间:2011-03-03 16:48:16

标签: iphone core-graphics quartz-graphics

我正在使用一些使用CGPath绘制弧的示例代码。我已经浏览了一下并找到了文档,但我似乎无法直观地看到我在使用MoveToPoint,AddLineToPoint等方面的情况。我无法“看到”代码在做什么我可以看到结果。

例如,下面的代码从3点钟位置开始绘制一个完整的360度弧。对于我的生活,我无法弄清楚如何让它从12点钟位置开始实际旋转视图 - 90度。

有人可以帮我弄清楚这段代码以及如何改变它以实现从12点开始,最好是试图解释整个路径是如何工作的。或者也许可以在线指向我的视觉资源?

- (void)drawPathWithArc:(CGFloat)arc {
    CGMutablePathRef thePath = CGPathCreateMutable();
    CGPathMoveToPoint(thePath, NULL, 100.f, 100.f);
    CGPathAddLineToPoint(thePath, NULL, 200.f, 100.f);
    CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO);
    CGPathCloseSubpath(thePath);
    shapeLayer_.path = thePath;
    CGPathRelease(thePath);
}

1 个答案:

答案 0 :(得分:16)

路径真的不是那么难以理解。基本上所有路径都是连接笛卡尔平面上定义iphone屏幕的两个点的线。

当你移动ToPoint时,它会将路径的当前点设置为指定的点。

当你添加LineToPoint时,它会从当前点到指定点绘制一条直线。

当你添加曲线点时,它会根据某些切线和控制点从当前点到指定点绘制一条曲线。

等等。我建议在CGPaths上阅读apple文档,以便更好地理解每个函数的作用。

http://developer.apple.com/library/mac/#documentation/graphicsimaging/Reference/CGPath/Reference/reference.html


至于你的问题是从12而不是3开始,只需阅读CGPathAddArc函数的文档。

您需要做的是更改当前代码:

CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO);

到:

CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, -M_PI_2, M_PI_2*3, NO);

所有这一切都是将起始角度改为-90度(所有角度均以弧度从水平方向测量),结束角度改为270度。


希望这会有所帮助。 干杯,

布伦顿。