在当前上下文中绘制弧

时间:2013-01-11 19:42:42

标签: ios core-graphics quartz-2d

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

-(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

1 个答案:

答案 0 :(得分:4)

这在[{3}}:

下解释
  

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

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

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

  •   

正角度(如M_PI_2)表示从正X轴向正Y轴的旋转。因此,在UIKit给你的图形环境中,正角度向下旋转。

另见“Coordinate Systems and Drawing in iOS” in the Drawing and Printing Guide for iOS