博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Arcs绘制弧度有关的理解

Posted on 2011-09-04 13:10  星尘的天空  阅读(327)  评论(0编辑  收藏  举报

绘制弧度的相关问题、用法的理解

两种方法创建弧度 第一种
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/21); // Top left corner

如果程序中CGContextAddArcToPoint被连续调用了N次,那么程序就等于在是视图中连续绘制N条相互独立但首尾又相连的弧线段。


THE END !