你的位置:首页 > 操作系统

[操作系统]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)