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文档,以便更好地理解每个函数的作用.
至于你的问题是从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度.
希望这可以帮助.干杯,
布伦顿.
| 归档时间: |
|
| 查看次数: |
9032 次 |
| 最近记录: |