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);
}

这是结果。 在此处输入图像描述

但我预计会看到这样的结果。为什么 M_PI_2 出现在圆圈的底部?应该有一个 3*M_PI_2,我做错了什么? 在此处输入图像描述

4

1 回答 1

4

这在 iOS绘图和打印指南中的“iOS 中的坐标系统和绘图”中进行了解释:

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

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

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

正角(如M_PI_2)表示从正 X 轴向正 Y 轴的旋转。因此,在 UIKit 提供给您的图形上下文中,正角度向下旋转。

另请参阅此答案

于 2013-01-11T19:53:13.257 回答