笔记:CGContextRef(初级)

参考: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(初级))