如何从6点而不是3点画出起始度

时间:2013-04-25 06:25:26

标签: ios core-graphics

我参考了这个example

我想从6点而不是3点画线。

//Create the path
CGContextAddArc(ctx, self.frame.size.width/2, self.frame.size.height/2, radius, 0, M_PI *2, 0);

//Set the stroke color to black

[[UIColor colorWithRed:241.0/255.0 green:90.0/255.0 blue:36.0/255.0 alpha:1.0]setStroke];

//Define line width and cap
CGContextSetLineWidth(ctx, TB_BACKGROUND_WIDTH);
CGContextSetLineCap(ctx, kCGLineCapButt);

//draw it!
//CGContextDrawPath(ctx, kCGPathFill);
CGContextDrawPath(ctx, kCGPathStroke);

目前 enter image description here

要求从6点钟而不是3点钟这样画 enter image description here

1 个答案:

答案 0 :(得分:2)

对于CGContextAddArc(),方法签名如下:

void CGContextAddArc (
   CGContextRef c,
   CGFloat x,
   CGFloat y,
   CGFloat radius,
   CGFloat startAngle,
   CGFloat endAngle,
   int clockwise
);

要从6点到3点修改起始位置,即将startAngle设置为-90度,即:

angle in degree = angle in radian x 180 / M_PI

-90 = radian x 180 / M_PI
radian = -90 x M_PI / 180
radian = -M_PI / 2

修改第1行如下:

CGContextAddArc(ctx, self.frame.size.width/2, self.frame.size.height/2, radius, -M_PI/2, ToRad(270), 0);

注意:最终路径的实际方向取决于图形上下文的当前变换矩阵。