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

dub*_*eat 7 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);
}
Run Code Online (Sandbox Code Playgroud)

Bre*_*rse 16

路径在视觉上并不难理解.基本上所有路径都是连接笛卡尔平面上定义iphone屏幕的两个点的线.

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

addLineToPoint时,它会从当前点到指定点绘制一条直线.

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

等等.我建议在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);
Run Code Online (Sandbox Code Playgroud)

至:

CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, -M_PI_2, M_PI_2*3, NO);
Run Code Online (Sandbox Code Playgroud)

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


希望这可以帮助.干杯,

布伦顿.