参考: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);
}