原文链接 http://differentisnotdifferent.diandian.com/post/2012-07-30/40032320467
CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, // 圆心(x,y)
CGFloat radius, // 半径
CGFloat startAngle, CGFloat endAngle, // 开始、结束弧度
int clockwise // 绘制方向,YES:逆时针;NO:顺时针
)
用法心得:
1. 弧度
中心点右侧 弧度为 0
中心点下方 弧度为 M_PI_2
中心点左侧 弧度为 M_PI
中心点上方 弧度为 -M_PI_2
2. 绘制x弧度圆
所谓x弧度圆,就是不满2π的圆弧。
比如 想画一个 缺口朝下&缺口弧度30度 的x弧度圆
选择逆时针画法:
startAngle = M_PI_2 - (15/180*M_PI);
endAngle = M_PI_2 + (diff/180*M_PI);
clockwise = YES;
选择顺时针画法:
startAngle = M_PI_2 + (15/180*M_PI);
endAngle = M_PI_2 - (diff/180*M_PI);
clockwise = NO;
3. 链接文章中提到的图解(自己不会画图。。。)
CGContextAddArc(context, 160, 200, 100, 0, 45*(M_PI/180), 0);
所以对上面这对代码的解释是这样的:
1)startAngle为0,绿色箭头的地方。
2)endAngle为45,黄色箭头的地方。
3)clockwise为0,按照红色箭头往下绘制图形。
4)所以效果就是红色的扇形。
补充:如果clockwise为1,则是蓝色部分区域。
[img]http://dl2.iteye.com/upload/attachment/0089/6997/d184a489-ccd1-32ba-9dc2-39ba796a1379.png[/img]
CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, // 圆心(x,y)
CGFloat radius, // 半径
CGFloat startAngle, CGFloat endAngle, // 开始、结束弧度
int clockwise // 绘制方向,YES:逆时针;NO:顺时针
)
用法心得:
1. 弧度
中心点右侧 弧度为 0
中心点下方 弧度为 M_PI_2
中心点左侧 弧度为 M_PI
中心点上方 弧度为 -M_PI_2
2. 绘制x弧度圆
所谓x弧度圆,就是不满2π的圆弧。
比如 想画一个 缺口朝下&缺口弧度30度 的x弧度圆
选择逆时针画法:
startAngle = M_PI_2 - (15/180*M_PI);
endAngle = M_PI_2 + (diff/180*M_PI);
clockwise = YES;
选择顺时针画法:
startAngle = M_PI_2 + (15/180*M_PI);
endAngle = M_PI_2 - (diff/180*M_PI);
clockwise = NO;
3. 链接文章中提到的图解(自己不会画图。。。)
CGContextAddArc(context, 160, 200, 100, 0, 45*(M_PI/180), 0);
所以对上面这对代码的解释是这样的:
1)startAngle为0,绿色箭头的地方。
2)endAngle为45,黄色箭头的地方。
3)clockwise为0,按照红色箭头往下绘制图形。
4)所以效果就是红色的扇形。
补充:如果clockwise为1,则是蓝色部分区域。
[img]http://dl2.iteye.com/upload/attachment/0089/6997/d184a489-ccd1-32ba-9dc2-39ba796a1379.png[/img]