1.1 Quartz 2D 绘图

本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书
 
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 进行绘图(通过创建路径对象的方式来绘图)
 
  • 代码相对简单
  • 只对部分 Quartz2D 的 API 做了封装
  • 对于没有封装的功能只能调用 Quartz2D 原生 API
  • 相关类: CGPathRef 、 CGMutablePathRef
 
步骤:
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 }

 

 


如有疑问,请发送邮件至 shorfng@126.com 联系我。
 
By:蓝田(Loto)
 
posted @ 2016-01-12 15:01  蓝田_Loto  阅读(249)  评论(0编辑  收藏  举报