1

我从这个例子中提到

我想从 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);

目前 在此处输入图像描述

需要像这样从 6 点钟而不是 3 点钟开始绘制 在此处输入图像描述

4

1 回答 1

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

IE

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

修改第一行如下:

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

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

于 2013-04-25T07:11:24.877 回答