使用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];