iOS 画圆弧或扇形

核心函数:函数

 

CGContextAddArcspa

Adds an arc of a circle to the current path, possibly preceded by a straight line segment3d

void CGContextAddArc (
   CGContextRef c, //图形上下文
   CGFloat x,//圆心x坐标
   CGFloat y,//圆心y坐标
   CGFloat radius,//圆半径
   CGFloat startAngle,//开始的弧度
   CGFloat endAngle,//结束的弧度
   int clockwise //画的方向(0=顺时针,1=逆时针)
);

关于角度与弧度的转换关系代码:code

#define radians(degrees)  (degrees)*M_PI/180.0f

画扇形并生成图片

//支持retina高分截屏的关键
    if(UIGraphicsBeginImageContextWithOptions != NULL){
        UIGraphicsBeginImageContextWithOptions(frame.size, NO, 0.0);
    } else {
        UIGraphicsBeginImageContext(frame.size);
    }
    CGContextRef context = UIGraphicsGetCurrentContext();

    //设置矩形填充颜色:红色
    CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
    //设置画笔颜色:黑色
    CGContextSetRGBStrokeColor(context, 0, 0, 0, 1);
    //设置画笔线条粗细
    CGContextSetLineWidth(context, 0.6);

    //扇形参数
    double radius=40;        //半径
    int startX=50;           //圆心x坐标
    int startY=100;          //圆心y坐标
    double pieStart=0;       //起始的角度
    double pieCapacity=60;   //角度增量值
    int clockwise=0;         //0=顺时针,1=逆时针

    //顺时针画扇形
    CGContextMoveToPoint(context, startX, startY);
    CGContextAddArc(context, startX, startY, radius, radians(pieStart), radians(pieStart+pieCapacity), clockwise);
    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathEOFillStroke);

    //扇形参数
    startX=200;             //圆心x坐标
    startY=100;             //圆心y坐标
    pieStart=0;             //起始的角度
    pieCapacity=60;         //角度增量值
    clockwise=1;            //0=顺时针,1=逆时针

    //逆时针画扇形
    CGContextMoveToPoint(context, startX, startY);
    CGContextAddArc(context, startX, startY, radius, radians(pieStart), radians(pieStart+pieCapacity), clockwise);
    CGContextClosePath(context);  
    CGContextDrawPath(context, kCGPathEOFillStroke);

    //生成图片
    UIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();


图中:blog

(1)为时针画扇形:角度0° --->  60°图片

(2)为时针画扇形:角度0° --->  60°ci

 

关于角度的定义:(参见下图)it


 红点为圆心,圆心右边绿线表示的角度为0°,往下绕红心顺时针开始依次为1°、2°、3°、...、360°。
io