使用quartz2D绘制图形的步骤 :
1.获取绘制的对象(上下文)(画布、纸)
2.设置绘制的路径
3.将路径添加到绘制的对象(上下文)
4.设置绘制的属性:线条的颜色、线条的宽度、裁减区域 context
5.绘制
(6.释放路径)如果路径通过creat创建的就需要释放
绘制线条
//1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); 第一种绘制方法 //2.设置绘制的路径 CGMutablePathRef path = CGPathCreateMutable(); //设置路径的起始点 CGPathMoveToPoint(path, NULL, 50, 50); //添加目标点 CGPathAddLineToPoint(path, NULL, 200, 200); //添加目标点 CGPathAddLineToPoint(path, NULL, 50, 200); //添加目标点 // CGPathAddLineToPoint(path, NULL, 50, 50); //关闭路径 CGPathCloseSubpath(path); //3.将路径添加到绘制的对象(上下文) CGContextAddPath(context, path); //4.设置绘制的属性:线条的颜色、线条的宽度、裁减区域 //设置绘制的线条颜色 CGContextSetRGBStrokeColor(context, 5/255.0, 128/255.0, 0, 1); //设置填充色 CGContextSetRGBFillColor(context, 22/255.0, 142/255.0, 242/255.0, 1); //设置线条的宽度 CGContextSetLineWidth(context, 3); //5.绘制 /* kCGPathFill, 只绘制填充 kCGPathStroke, 绘制线条 kCGPathFillStroke, 填充和线条 */ CGContextDrawPath(context, kCGPathFillStroke); //6.释放路径 CGPathRelease(path); 第二种绘制方法 //2.设置绘制的路径 CGPoint p1 = CGPointMake(50, 50); CGPoint p2 = CGPointMake(200, 50); CGPoint p3 = CGPointMake(200, 200); CGPoint p4 = CGPointMake(50, 200); CGPoint p5 = p1; CGPoint pointArray[] = {p1,p2,p3,p4,p5}; //将点放到路径中 CGContextAddLines(context, pointArray, 5); //4、设置绘制的属性 // //设置线条的颜色 // CGContextSetRGBStrokeColor(context, 1, 1, 1, 1); // //设置填充色 // CGContextSetRGBFillColor(context, 43/255.0, 131/255.0, 160/255.0, 1); //使用UIKit中设置颜色的方法 // [[UIColor redColor] setStroke]; // [[UIColor blueColor] setFill]; //设置线条和填充色都是这个颜色 // [[UIColor redColor] set]; //5、绘制 CGContextDrawPath(context, kCGPathEOFillStroke);
绘制矩形
//1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); CGRect rect = CGRectMake(40, 40, 100, 100); //在上下文上添加矩形 CGContextAddRect(context, rect); //设置线条的颜色 [[UIColor greenColor] setStroke]; //设置填充色 [[UIColor redColor] setFill]; //设置线条的宽度 CGContextSetLineWidth(context, 10); //设置连接点得样式 CGContextSetLineJoin(context, kCGLineJoinRound); //绘制 CGContextDrawPath(context, kCGPathFillStroke); //使用UI绘制矩形 CGRect rect1 = CGRectMake(90, 50, 200, 200); [[UIColor redColor] setStroke]; [[UIColor greenColor] setFill]; //如果设置,则UIRectFrame绘制线条和填充 UIRectFillUsingBlendMode(rect1, kCGBlendModeCopy); //绘制矩形框(线条) UIRectFrame(rect1); //绘制填充图形 // UIRectFill(rect);
绘制圆形
//1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); //在上下文中添加圆 /* x,y表示圆心 radius:半径 startAngle:起始角度 endAngle:结束角度 注角度的正负 clockwise:绘制的方向 1:逆时针 0:顺时针 */ CGContextAddArc(context, 150, 150, 100, 0, 2*M_PI, 1); //设置线条的颜色 [[UIColor orangeColor] setStroke]; [[UIColor greenColor] setFill]; CGContextDrawPath(context, kCGPathFillStroke); */ //绘制椭圆 CGRect rect = CGRectMake(30, 30, 200, 100); //绘制矩形 // UIRectFrame(rect); CGContextAddEllipseInRect(context, rect); CGContextSetRGBStrokeColor(context,43/255.0, 131/255.0, 160/255.0, 1); //绘制 CGContextDrawPath(context, kCGPathStroke);
绘制贝塞尔曲线
//1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); //设置起始点 CGContextMoveToPoint(context, 20, 200); //添加曲线 // CGContextAddCurveToPoint(context, 100, 20, 120, 300, 300, 50); CGContextAddQuadCurveToPoint(context, 150, 20, 300, 200); //绘制 CGContextDrawPath(context, kCGPathStroke);
绘制图片
//1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); //UIKit提供的多种方式 //方式一:指定绘制的初始点,绘制的大小有图片决定(图片的原尺寸) [img drawAtPoint:CGPointMake(30, 30)]; //方式二:指定绘制的位置和大小,图片会在矩形区域中填充 [img drawInRect:CGRectMake(30, 30, 100, 200)]; //方式三:保证图片的原尺寸的前提下,平铺视图 [img drawAsPatternInRect:CGRectMake(30, 30, 100, 200)]; //保存以前的状态 CGContextSaveGState(cotext); //缩放y轴 CGContextScaleCTM(cotext, 1, -1); //平移 CGContextTranslateCTM(cotext, 0, -200); //使用Core Graphic方法绘制图片 CGContextDrawImage(cotext, CGRectMake(0, 0, 200, 200), img.CGImage); //恢复 CGContextRestoreGState(cotext);
绘制文字
图片 //1.获取绘制的对象(上下文)(画布、纸) CGContextRef context = UIGraphicsGetCurrentContext(); //绘制的内容 NSString *text = @"我就是我,是颜色不一样的烟火"; //设置绘制的区域 CGRect rect = CGRectMake(30, 90, 20, 500); UIRectFrame(rect); NSDictionary *dic = @{ NSFontAttributeName:[UIFont systemFontOfSize:18], NSForegroundColorAttributeName:[UIColor orangeColor] }; //注意:使用此方法绘制文字的时候,字体的颜色使用字典设置 [text drawInRect:rect withAttributes:dic]; //设置线条 // [[UIColor redColor] set]; // [text drawInRect:rect withFont:[UIFont systemFontOfSize:18] lineBreakMode:NSLineBreakByWordWrapping];