绘制弧度的相关问题、用法的理解
两种方法创建弧度 第一种
void CGContextAddArc (
CGContextRef c,
CGFloat x, //圆心的x坐标
CGFloat y, //圆心的x坐标
CGFloat radius, //圆的半径
CGFloat startAngle, //开始弧度
CGFloat endAngle, //结束弧度
int clockwise //0表示顺时针,1表示逆时针
);
起始弧度为X轴方向,向下为正,向下方向进行旋转绘制
假如想创建一个完整的圆圈,那么 开始弧度就是0 结束弧度是 2pi, 因为圆周长是 2*pi*r.
最后,函数执行完后,current point就被重置为(x,y).
第二种
void CGContextAddArcToPoint (
CGContextRef c,
CGFloat x1, //端点1的x坐标
CGFloat y1, //端点1的y坐标
CGFloat x2, //端点2的x坐标
CGFloat y2, //端点2的y坐标
CGFloat radius //半径
);
原理:首先画两条线,这两条线分别是 current point to (x1,y1) 和(x1,y1) to (x2,y2).
这样就是出现一个以(x1,y1)为顶点的两条射线,
然后定义半径长度,这个半径是垂直于两条射线的,这样就能决定一个圆了,
最后,函数执行完后,current point就被重置为(x2,y2).如果后面还有CGContextAddArcToPoint函数调用,那么这个(X2,Y2)就是新的绘制起点。
CGContextAddArcToPoint调用一次,就会在视图绘制一段弧,并且由两个CGContextAddArcToPoint函数调用绘制的两段弧,是相互独立的,
参考代码
CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
下面的代码和上面的代码类似:
CGContextMoveToPoint(context, fw, fh/2); // Start at lower right corner
CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1); // Top right corner
CGContextMoveToPoint(context, fw/2, fh); // 重新移动焦点到制定的位置,为进行下一段弧的绘制做准备
CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner
如果程序中CGContextAddArcToPoint被连续调用了N次,那么程序就等于在是视图中连续绘制N条相互独立但首尾又相连的弧线段。
THE END !