本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书”
Quartz2D 绘图主要步骤:
1. 获取【图形上下文】对象 —— (拿到草稿纸) |
2. 向【图形上下文】对象中添加【路径】
2.1 拼接路径(画内容)
2.2 添加路径到上下文(把内容放在草稿纸上)
|
3. 渲染 ——(把【图形上下文】中的图形绘制到对应的设备上)(根据草稿纸上的内容显示出来东西) |
关键方法:
1 // 获取上下文 2 CGContextRef ctx = UIGraphicsGetCurrentContext(); 3 4 // 创建可变路径(c) 5 CGMutablePathRef path = CGPathCreateMutable(); 6 7 // 把路径放在上下文当中 8 CGContextAddPath(ctx, path); 9 10 // 创建路径对象(oc) 11 UIBezierPath* path = [UIBezierPath bezierPath]; 12 13 // 渲染 14 CGContextStrokePath(ctx);
Quartz2D 绘图方式:
方式一:直接调用 Quartz2D 的 API 进行绘图
步骤:
1、获取绘图上下文
2、把图形绘制到绘图上下文上
3、把绘图上下文上的图形渲染到对应的设备上
|
方式二:调用 UIKit 框架封装好的 API 进行绘图(通过创建路径对象的方式来绘图)
步骤:
1、先把图形缓存到"路径对象"中,
2、然后再把路径对象添加到上下文对象中
3、最后再把上下文对象渲染到对应的设备上
比如:画图片、文字到控件上。(UIKit 已经封装好了)
|
代码示例:
方法1:
1 #import “TDView.h" 2 3 @implementation TDView 4 - (void)drawRect:(CGRect)rect { 5 6 // 1.获取,当前的layer类型的,图形上下文 7 CGContextRef ctx = UIGraphicsGetCurrentContext(); 8 9 // 2.拼接路径,同时,把路径添加到上下文当中(下面代码是搞一条线段) 10 CGContextMoveToPoint(ctx, 50, 50); 11 CGContextAddLineToPoint(ctx, 100, 100); 12 13 // 3.渲染(绘制路径)<把 上下文中的 路径 移动到 UIView 上> 14 CGContextStrokePath(ctx); // StrokeXxxx 表示画线(边线)(空心图形) 15 CGContextFillPath(ctx); // FillXxx 表示画填充的图形(实心图形) 16 } 17 @end
方法2:
1 - (void)test2 2 { 3 // 1.获取图形上下文(layer) 4 CGContextRef ctx = UIGraphicsGetCurrentContext(); 5 6 // 2.拼接路径 7 CGMutablePathRef path = CGPathCreateMutable(); 8 CGPathMoveToPoint(path, NULL, 50, 50); 9 CGPathAddLineToPoint(path, NULL, 100, 100); 10 11 // 3.把路径添加到上下文当中 12 CGContextAddPath(ctx, path); 13 14 // 4.渲染 15 CGContextStrokePath(ctx); 16 }