CGContextAddArcToPoint与CGContextAddArc

来源:互联网 发布:帝国cms二次开发手册 编辑:程序博客网 时间:2024/05/17 07:02

这两个函数是绘制圆弧的函数。第一个函数比较好理解,第二个函数让我在纸上画了半天才搞明白,把我的理解给大家分享下。 

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

CGContextRef不解释了,x,y为圆点坐标,startAngle为开始的弧度,endAngle为  结束的弧度,clockwise 0为顺时针,1为逆时针。

以下是示例代码。  
CGContextBeginPath(context);   
CGContextSetRGBStrokeColor(context, 0, 1, 0, 1);  
CGContextAddArc(context, 100, 100, 50, 180* PI/ 180, 270* PI/ 180, 0);   CGContextStrokePath(context);  

void CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius);  
这个函数就比较难理解了,首先使用该函数绘制圆弧前,首先要确定一个start point.
CGContextMoveToPoint(context, 100, 100);
然后设置CGContextAddArcToPoint(context, 50, 100, 50, 150, 50);
这里是从起始点100,100开始到第一个点50,100画一条线段,然后再从第一个点50,100到第二点150,50画另一条线段,然后设置半径为50.通过相交的两条线段和半径就可以确定圆弧了。

示例代码如下:

CGContextBeginPath(context);
CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);
CGContextMoveToPoint(context, 100, 100);
CGContextAddArcToPoint(context, 50, 100, 50, 150, 50);
CGContextStrokePath(context);
注意:Path被绘制后,当前点的坐标更改为150,50