美文网首页
CGContextAddArc和UIBezierPath画弧参数

CGContextAddArc和UIBezierPath画弧参数

作者: 不写昵称 | 来源:发表于2019-03-26 13:49 被阅读0次

    画弧线方法

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

    理解:方法中的startAngle,endAngle,clockwise是相对于数学坐标(x轴向右,y轴向上)来说的,但是由于ios中的坐标是x向右,y向下,因此最后得到的效果会是相对于x轴的镜像。也就是绘制时,是先按照x向右,y向上的坐标,以指定的方向进行绘制,然后获得的弧线和方向以x为轴,做镜像翻转,这样才获得最终的图形效果。

    实际应用:
    根据效果设置参数:
    1、使用数学坐标(x向右,y向上)时,先获取需要的效果的起点、终点位置及方向,然后将起点、终点及方向都取反,则获得的参数即为填入方法中的参数。
    2、使用ios坐标(x向右,y向下)时,先取得需要的效果的起点、终点位置及方向,然后只将方向取反,则起点、终点、取反后的方向即为填入方法中的参数。

    根据参数查看效果:
    1、使用数学坐标(x向右,y向上)时,将起点、终点及方向都取反
    2、使用ios坐标(x向右,y向下)时,只将方向取反

    UIBezierPath画弧

    - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
    

    通过UIBezierPath画弧时,方法中的startAngle,endAngle,clockwise是相对于ios坐标(x轴向右,y轴向下)来说的,也就是绘制时,直接按照x向右,y向下的坐标,以指定的方向进行绘制,不用用做翻转,直接得到最终的图形效果。

    例:

        CGPoint centerPoint = CGPointMake(CGRectGetWidth(rect)/2, CGRectGetHeight(rect)/2);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);
        //CGContextRef画弧
        //CGContextMoveToPoint(context, centerPoint.x, centerPoint.y);
        //CGContextAddArc(context, centerPoint.x, centerPoint.y, 100, 0, -M_PI_2, 1);
        
        //UIBezierPath画弧
        UIBezierPath *bezierPath = [UIBezierPath bezierPath];
        [bezierPath moveToPoint:centerPoint];
        [bezierPath addArcWithCenter:centerPoint radius:100 startAngle:0 endAngle:-M_PI_2 clockwise:0];
        CGContextAddPath(context, bezierPath.CGPath);
        
        CGContextClosePath(context);
        CGContextFillPath(context);
    
    屏幕快照 2019-03-20 下午2.00.55.png

    相关文章

      网友评论

          本文标题:CGContextAddArc和UIBezierPath画弧参数

          本文链接:https://www.haomeiwen.com/subject/cplgvqtx.html