我试图在当前上下文中绘制自定义弧,但结果不是我期望看到的,如果是绘制方法,我有简单的代码行。
-(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,我做错了什么?
答案 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。