- Quartz 2D 是一个
二维绘图
引擎,同时支持iOS 和 Mac
系统 - Quartz 2D 能完成的工作:
1、绘制图形: 线条、三角形、矩形、圆和弧等;
2、绘制文字;
3、绘制,生成图片(图像);
4、读取,生成PDF;
5、截图,裁剪图片;
6、自定义 UI 控件(普通的 UI 控件无法使用 UIkit 框架实现,可以使用 Quartz 2D 技术将控件内部的结构画出来,自定义控件的样子,例如五角星⭐️)。
图像上下文:“画板”
- 图形上下文(Graphics Context): 是一个 CGContextRef 类型的数据;
- 图行上下文的作用:
1、保存绘制信息,绘图状态;
2、决定绘制的输出目标(绘制到什么地方去?):输出目标可以是PDF文件、Bitmap(位图)或者显示器的窗口上;
3、相同的一套绘图序列,指定不同的 Graphics Context,就可将想吐的图像绘制到不同的目标。
绘制流程
图形上下文类型
- Bitmap Graphics Context
- PDF Graphics Context
- Window Graphics Context
- Layer Graphics Context
自定义 View
- 新建一个类,继承自 UIview
- 实现
- (void)drawRect:(CGRect)rect
方法(只有在这个方法里,才能获取图像上下文,和View 相关联),然后在这个方法中:
1、取得跟当前 view 相关联的图像上下文;
2、绘制相应的图形内容;
3、利用图形上下文将绘制的所有内容渲染显示到 view 上面
绘制效果
绘制直线
方法一:开发中不常用
//1、获取图像的上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 2、绘制描述路径
CGMutablePathRef path = CGPathCreateMutable();
// 3、绘制路径的起点
CGPathMoveToPoint(path, NULL, 50, 50);
CGPathAddLineToPoint(path, NULL, 200, 200);
//把路径添加到上下文
CGContextAddPath(ctx, path);
//4、 渲染上下文
CGContextStrokePath(ctx);
方法二:
// 获取上下文 本身封装的方法,路径封装了
CGContextRef ctx = UIGraphicsGetCurrentContext();
//描述路径
//添加起点
CGContextMoveToPoint(ctx, 50, 50);
//添加直线
CGContextAddLineToPoint(ctx, 200, 200);
//渲染上下文
CGContextStrokePath(ctx);
方法三:开发建议使用
// UIkit 自己封装的绘制功能 贝塞尔路径绘制
// 创建路径
UIBezierPath *path = [UIBezierPath bezierPath];
// 路径起点
[path moveToPoint:CGPointMake(50, 50)];
// 添加线到
[path addLineToPoint:CGPointMake(200, 200)];
// 渲染路径
[path stroke];
网友评论