美文网首页
笔记:CGContextRef(初级)

笔记:CGContextRef(初级)

作者: 怪客半 | 来源:发表于2017-03-06 17:10 被阅读68次

    参考:http://www.360doc.com/content/13/1228/16/8310724_340792339.shtml

    一、初识

    context:环境;上下文 ref:参考

    二、创建对象(画布)

    见代码

    三、列举函数:

    • CGContextSetRGBFillColor 设置填充颜色(RGB格式)
    • 写文字(其实是NSString的用法)
      eg:[@"画圆" drawInRect:CGRectMake(10, 20, 80, 20) withAttributes:@{NSFontAttributeName:font}];
    • CGContextSetRGBStrokeColor 设置画笔颜色(RGB格式)
    • CGContextSetLineWidth 设置线宽
    • CGContextAddArc 设置一个圆弧路径
    • CGContextDrawPath 绘制设置的路径
    • CGContextSetFillColorWithColor 设置填充色(UIColor对象)
    • CGContextMoveToPoint 设置路径开始点
    • CGContextAddArcToPoint 三个点及半径确定一段圆弧
      比较难理解,参考:http://blog.csdn.net/dick_china/article/details/7864428#comments
    • CGContextStrokeRect、CGContextFillRect 根据参数中的rect绘制矩形,不需要调用CGContextDrawPath
    • CGContextAddRect 设置一个矩形路径,需要调用CGContextDrawPath来进行绘制
    • CGContextAddEllipseInRect 设置椭圆路径,需要调用CGContextDrawPath来进行绘制
    • CGContextAddLines 添加多条线,参数需要传入一个c语言数组

    四、代码

    代码第一行应该是:** - (void)drawRect:(CGRect)rect {**
    但是“-“与markdown的语法有冲突,就去掉了。_|||

     (void)drawRect:(CGRect)rect {
        //画布
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        //写文字
        //填充颜色  drawInRect
        //CGContextSetRGBFillColor 设置填充RGB颜色
        CGContextSetRGBFillColor(context, 1, 0, 0, 1.0);
        UIFont *font = [UIFont boldSystemFontOfSize:15.0f];
        [@"画圆" drawInRect:CGRectMake(10, 20, 80, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画线及弧线" drawInRect:CGRectMake(10, 80, 100, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画矩形" drawInRect:CGRectMake(10, 120, 80, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画扇形和椭圆" drawInRect:CGRectMake(10, 160, 110, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画三角形" drawInRect:CGRectMake(10, 220, 80, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画圆角矩形" drawInRect:CGRectMake(10, 260, 100, 20) withAttributes:@{NSFontAttributeName:font}];
        [@"画贝塞尔曲线" drawInRect:CGRectMake(10, 300, 100, 20) withAttributes:@{NSFontAttributeName:font}];
        //边框圆
        //CGContextSetRGBStrokeColor 设置画笔RGB颜色
        //CGContextSetLineWidth 设置线宽
        //CGContextAddArc 增加圆弧路径
        //CGContextDrawPath 开始画
        CGContextSetRGBStrokeColor(context, 1, 1, 1, 1.0);
        CGContextSetLineWidth(context, 1.0);
        CGContextAddArc(context, 100, 20, 15, 0, 2*M_PI, 0);
        CGContextDrawPath(context, kCGPathStroke);
        
        //无边框填充圆
        //CGContextSetFillColorWithColor UIColor对象设置填充色
        UIColor *myColor = [UIColor orangeColor];
        CGContextSetFillColorWithColor(context, myColor.CGColor);
        CGContextAddArc(context, 150, 30, 30, 0, 2*M_PI, 0);
        CGContextDrawPath(context, kCGPathFill);
        
        //有边框填充圆
        UIColor *aColor = [UIColor colorWithRed:1 green:0 blue:0 alpha:1];
        CGContextSetFillColorWithColor(context, aColor.CGColor);
        CGContextSetLineWidth(context, 1.0f);
        CGContextAddArc(context, 250, 40, 40, 0, M_PI*2, 0);
        CGContextDrawPath(context, kCGPathFillStroke);
        
        //画笑脸
        //CGContextMoveToPoint 设置路径开始点
        //CGContextAddArcToPoint 两点加半径画弧
        CGContextSetRGBStrokeColor(context, 0, 0, 1, 1);
        CGContextMoveToPoint(context, 140, 80);
        CGContextAddArcToPoint(context, 148, 68, 156, 80, 10);
        
        CGContextMoveToPoint(context, 160, 80);
        CGContextAddArcToPoint(context, 168, 68, 176, 80, 10);
        CGContextStrokePath(context);
        
        CGContextMoveToPoint(context, 150, 90);
        CGContextAddArcToPoint(context, 158, 102, 166, 90, 10);
        CGContextStrokePath(context);
        
        //矩形
        //CGContextStrokeRect 根据rect开始画矩形
        //CGContextFillRect 根据rect开始填充矩形
        //CGContextAddRect 添加矩形路径
        aColor = [UIColor blueColor];
        CGContextSetFillColorWithColor(context, aColor.CGColor);
        aColor = [UIColor yellowColor];
        CGContextSetStrokeColorWithColor(context, aColor.CGColor);
        CGContextStrokeRect(context, CGRectMake(100, 120, 10, 10));
        CGContextFillRect(context, CGRectMake(120, 120, 10, 10));
        CGContextAddRect(context, CGRectMake(140, 120, 60, 30));
        CGContextDrawPath(context, kCGPathFillStroke);
        
        //扇形
        aColor = [UIColor colorWithRed:0 green:1 blue:1 alpha:1];
        CGContextSetFillColorWithColor(context, aColor.CGColor);
        
        CGContextMoveToPoint(context, 160, 180);
        CGContextAddArc(context, 160, 180, 30, -60*M_PI/180, -120*M_PI/180, 1);
        CGContextClosePath(context);
        CGContextDrawPath(context, kCGPathFillStroke);
        
        //CGContextAddEllipseInRect 设置椭圆路径
        CGContextAddEllipseInRect(context, CGRectMake(160, 180, 20, 8));
        CGContextDrawPath(context, kCGPathFillStroke);
        
        //三角形
        //CGContextAddLines 添加多条线
        CGPoint sPoint[3];
        sPoint[0] = CGPointMake(100, 220);
        sPoint[1] = CGPointMake(130, 220);
        sPoint[2] = CGPointMake(130, 160);
        CGContextAddLines(context, sPoint, 3);
        CGContextClosePath(context);
        CGContextDrawPath(context, kCGPathFillStroke);
        
        //圆角矩形
        float fw = 180;
        float fh = 280;
        CGContextMoveToPoint(context, fw, fh-20);
        CGContextAddArcToPoint(context, fw, fh, fw-20, fh, 15);
        CGContextAddArcToPoint(context, 120, fh, 120, fh-20, 15);
        CGContextAddArcToPoint(context, 120, 250, fw-20, 250, 15);
        CGContextAddArcToPoint(context, fw, 250, fw, fh-20, 15);
        CGContextClosePath(context);
        CGContextDrawPath(context, kCGPathStroke);
        
        fw += 100;
        CGContextMoveToPoint(context, fw, fh-20);
        CGContextAddLineToPoint(context, fw, fh);
        CGContextAddLineToPoint(context, fw-20, fh);
        CGContextAddLineToPoint(context, 120+100, fh);
        CGContextAddLineToPoint(context, 120+100, fh-20);
        CGContextAddLineToPoint(context, 120+100, 250);
        CGContextAddLineToPoint(context, fw-20, 250);
        CGContextAddLineToPoint(context, fw, 250);
        CGContextAddLineToPoint(context, fw, fh-20);
        CGContextDrawPath(context, kCGPathStroke);
        
        //贝塞尔曲线
        CGContextMoveToPoint(context, 120, 300);
        CGContextAddQuadCurveToPoint(context, 190, 310, 120, 390);
        CGContextStrokePath(context);
        
        CGContextMoveToPoint(context, 200, 300);
        CGContextAddCurveToPoint(context, 250, 280, 250, 400, 280, 300);
        CGContextStrokePath(context);
    }
    

    相关文章

      网友评论

          本文标题:笔记:CGContextRef(初级)

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