Quartz2D是C语言的一个绘图引擎。
首先应该了解一个概念什么是图形上下文?
图形上下文是保存绘图信息与绘图状态的C语言数据类型。
绘图步骤:
继承UIView---->在drawRect方法中获取上下文绘制图形----->输出显示(可以显示在PDF,layer,window,printor,Bitmap上)
-----------------------------获取图形上下文(最重要的一步)--------------------------------
CGContextRef context = UIGraphicsGetCurrentContext();//获取图形上下文
---------------------------在绘制前设置颜色、线段等基本状态-------------------------
CGContextSetRGBStrokeColor(context,1,1,1,0.6); //设置颜色(参数说明:1分别代表红黄蓝,0.6表示透明度)
CGContextSetLineWidth(context,13); //设置线段宽度
CGContextSetLineCap(context,kCGLineCapRound); //设置线段头尾样式(一共有三种样式-自己点进去查看 )
CGContextSetLineJoin(context,kCGLineJoinRound); //设置线段折叠样式(一共有三种样式-自己点进去查看)
----------------------------绘制一条线段-------------------------
CGContextMoveToPoint(context,10,10); //绘制第一个点
CGContextAddLineToPoint(context,10,10); //描绘连接第二个点
CGContextStrokePath(context); //空心渲染
----------------------------画三角形---------------------------
CGContextMoveToPoint(context,10,10); //绘制一个点
CGContextAddLineToPoint(context,20,20); //连接第二个点
CGContextAddLineToPoint(context,30,10); //连接第三个点
CGContextClosePath(context); //关闭路径(不需要在写第四个点)
CGContextStrokePath(context); //空心渲染
CGContextFillPath(context); //实心渲染
-----------------------------绘制一个矩形-------------------------
CGContextAddRect(context, CGRectMake(10,10,10,10));
CGContextStrokePath(context); //空心渲染
CGContextFillPath(context); // 实心渲染(除线段之外的所有图像都可以实心渲染)
-----------------------------绘制椭圆与圆形-------------------------
CGContextAddEllipseInRect(context, CGRectMake(0,0,50,50));//这是一个画椭圆的方法,但是椭圆宽高一样的时候就成了园
CGContextStrokePath(context); //空心渲染
CGContextFillPath(context); //实心渲染
---------------------------绘制圆弧----------------------------------
画圆弧顺时针的时候X 正半轴开始旋转:0,1/2π,π,3/2π 逆时针的时候X正半轴开始旋转:0,-1/2π,π,-3/2π
CGContextAddArc(conntext, x, y, 半径, 起始角度, 结束角度, 顺时针(0表示)还是逆时针(1标识)旋转);
CGContextStrokePath(context); //空心渲染
CGContextFilPath(context); //实心渲染
---------------------------画文字-----------------------------------
NSString *text = @“Quartz2D挺简单的”;
NSDictionary *attr = @{NSFontAttributName:[NSFontSystem FontOfSize:13], NSForegroundColorAttributeName:[UIColor yellowColor]}; //字体大小,文字颜色
[text drawAtPoint:CGPoint(10,10) withAttributs:attr]; //画文字,只标注了点,文字不会自动换行
[text drawInRect:CGRectMake(0.0.20,20) withAttributs:attr]; //此方法,文字会自动换行
---------------------------画图片------------------------------
UIImage *image = [UIImage imageWithName:@""];
[image drawInRect:rect ];
[image drawAsPatterInRect:rect]; //平铺绘画