【发布时间】:2014-07-16 14:03:13
【问题描述】:
我使用下面的代码在圆的下半部分画了一个圆弧。
根据 Apple 中的文档:
此方法创建一个开放的子路径。创建的弧位于 指定圆的周长。默认绘制时 坐标系,起点和终点角度以单位为单位 圆如图 1 所示。例如,指定起始角度为 0 弧度,π弧度的结束角度,并设置顺时针 参数 YES 绘制圆的下半部分。然而, 指定相同的开始和结束角度,但设置顺时针 设置为 NO 的参数绘制圆的上半部分。
我写了
std::complex<double> start1( std::polar(190.0,0.0) );
CGPoint targetStart1 = CGPointMake(start1.real() + 342.0, start1.imag() + 220.);
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, targetStart1.x, targetStart1.y);
CGPathAddArc(path, NULL, 342.0, 220.0, 190, 0.0, PI_180, YES );
CGContextAddPath(context, path);
CGContextSetLineWidth( context, 15.0 );
// set the color for the stroked circle
CGContextSetStrokeColorWithColor( context, [UIColor greenColor].CGColor);
CGContextStrokePath(context);
CGPathRelease(path);
但是,圆弧绘制在圆的上半部分(见绿色环)。我想知道我是否不小心在代码中的某个地方翻转了协调系统,但我不知道我应该搜索什么命令。
感谢您的帮助。
【问题讨论】:
-
记住 UIKit 和 CoreGraphics 有不同的坐标系:informit.com/articles/article.aspx?p=2149190&seqNum=11
-
@Vinzzz 你的意思是在 CGPathAddArc 中顺时针表示逆时针吗?那为什么文件中没有提到呢?
-
@Vinzzz 但我认为 0,0 坐标在左上角。因为有了这个假设,targetStart1 的位置显然是正确的。