2013-01-11 62 views
1

我试图在当前上下文中绘制自定义弧,但结果不是我期望看到的,如果绘制方法有简单的代码行,当前上下文中的绘制弧

-(void) drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextBeginPath(context); 
    CGContextSetGrayFillColor(context, 1.0, 0.7); 
    CGContextMoveToPoint(context, 100,100); 
    CGContextAddArc(context, 100, 100, 80, 0, M_PI_2, 0); 
    CGContextClosePath(context); 
    CGContextFillPath(context); 
} 

这就是结果。 enter image description here

但我被期望看到这样的结果。为什么M_PI_2出现在圈子的底部?应该有一个3 * M_PI_2,我做错了什么? enter image description here

回答

4

“Coordinate Systems and Drawing in iOS” in the Drawing and Printing Guide for iOS下说明:

每个的iOS的绘制框架建立基于当前图形上下文默认坐标系。在IOS,有两种主要类型的坐标系统:

  • 左上-坐标系原点(ULO),其中绘图操作的原点在绘图区域的左上角,积极的价值观向下和向右延伸。 UIKit和Core Animation框架使用的默认坐标系统是基于ULO的。

  • 左下原点坐标系(LLO),其中绘图操作的原点位于绘图区域的左下角,正值向上和向右延伸。 Core Graphics框架使用的默认坐标系是基于LLO的。

正角(如M_PI_2)表示从向正Y轴正X轴的旋转。所以在UIKit给你的图形上下文中,正角度向下旋转。请参阅this answer

+0

so UIKit自动旋转(LLO)坐标系吗? – taffarel