本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书
 
Quartz2D 绘图主要步骤:

 
1. 获取【图形上下文】对象 —— (拿到草稿纸)
2. 向【图形上下文】对象中添加【路径】
 
2.1 拼接路径(画内容)
2.2 添加路径到上下文(把内容放在草稿纸上)
3. 渲染 ——(把【图形上下文】中的图形绘制到对应的设备上)(根据草稿纸上的内容显示出来东西)
 关键方法:

 // 获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 创建可变路径(c)
CGMutablePathRef path = CGPathCreateMutable(); // 把路径放在上下文当中
CGContextAddPath(ctx, path); // 创建路径对象(oc)
UIBezierPath* path = [UIBezierPath bezierPath]; // 渲染
CGContextStrokePath(ctx);

 
Quartz2D 绘图方式:

 
方式一:直接调用 Quartz2D 的 API 进行绘图
 
  • 代码量稍大
  • 功能全面
 
步骤:
1、获取绘图上下文
2、把图形绘制到绘图上下文上
3、把绘图上下文上的图形渲染到对应的设备上
方式二:调用 UIKit 框架封装好的 API 进行绘图(通过创建路径对象的方式来绘图)
 
  • 代码相对简单
  • 只对部分 Quartz2D 的 API 做了封装
  • 对于没有封装的功能只能调用 Quartz2D 原生 API
  • 相关类: CGPathRef 、 CGMutablePathRef
 
步骤:
1、先把图形缓存到"路径对象"中,
2、然后再把路径对象添加到上下文对象中
3、最后再把上下文对象渲染到对应的设备上
 
比如:画图片、文字到控件上。(UIKit 已经封装好了)
 
 
 
代码示例:

方法1:
 #import “TDView.h"

 @implementation TDView
- (void)drawRect:(CGRect)rect { // 1.获取,当前的layer类型的,图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接路径,同时,把路径添加到上下文当中(下面代码是搞一条线段)
CGContextMoveToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , ); // 3.渲染(绘制路径)<把 上下文中的 路径 移动到 UIView 上>
CGContextStrokePath(ctx); // StrokeXxxx 表示画线(边线)(空心图形)
CGContextFillPath(ctx); // FillXxx 表示画填充的图形(实心图形)
}
@end

方法2:

 - (void)test2
{
// 1.获取图形上下文(layer)
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.拼接路径
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, , );
CGPathAddLineToPoint(path, NULL, , ); // 3.把路径添加到上下文当中
CGContextAddPath(ctx, path); // 4.渲染
CGContextStrokePath(ctx);
}


如有疑问,请发送邮件至 shorfng@126.com 联系我。
 
By:蓝田(Loto)
 

1.1 Quartz 2D 绘图的更多相关文章

  1. Quartz 2d绘图

    今天看了一下Quartz 2D绘图,我只想说:不要把绘图和动画那些东西当做一个很复杂的东西,其实只要你认真看还是可以理解的.他们并不难.啰嗦了几句,现在直接进入正题: 前提是我们必须新建一个singl ...

  2. iOS基础 - Quartz 2D绘图的基本步骤

    一.使用Quartz 2D绘图的基本步骤 1) 获取上下文context(绘制图形的地方) 2) 设置路径(路径是用来描述形状的) 3)  将路径添加到上下文 4)  设置上下文属性(设置颜色,线宽, ...

  3. iOS基础 - Quartz 2D绘图

    一.Quartz 2D Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境. Quartz 2D以PDF的规范为基础的图形库,用来绘制二维文字和图形,允许相同的绘图指令在任 ...

  4. Core Graphics框架 利用Quartz 2D绘图

    首先,什么是Core Graphics和Quartz 2D? Core Graphics:是基于Quartz 2D绘图引擎的一个C语言的API绘图框架.它也是iOS开发中最基本的框架(Framewor ...

  5. 关于Quartz 2D绘图的简单使用

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境,Quartz 2D的API可以实现许多功能,如:基于路径的绘图.透明度.阴影.颜色管理.反锯齿.PDF文档生成和PDF元 ...

  6. iOS - Quartz 2D 二维绘图

    1.Quartz 2D 简介 Quartz 2D 属于 Core Graphics(所以大多数相关方法的都是以 CG 开头),是 iOS/Mac OSX 提供的在内核之上的强大的 2D 绘图引擎,并且 ...

  7. iOS - Quartz 2D 贝塞尔曲线

    1.贝塞尔曲线 贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线.一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支 ...

  8. iOS_Quartz 2D绘图

    目  录: 一.基础知识掌握 二.Quartz 2D绘图基础:CGContextRef实现简单地绘制图形 三.CGContextRef实现文字.图片.基于路径的图形绘制 四.在内存中绘制位图 五.添加 ...

  9. Quartz 2D(常用API函数、绘制图形、点线模式)

    Quzrtz 2D 绘图的核心 API 是 CGContextRef ,它专门用于绘制各种图形. 绘制图形关键是两步: 1.获取 CGContextRef ; 2.调用 CGContextRef 的方 ...

随机推荐

  1. 自然语言26_perplexity信息

    http://www.ithao123.cn/content-296918.html 首页 > 技术 > 编程 > Python > Python 文本挖掘:简单的自然语言统计 ...

  2. mate标签

    <meta charset='utf-8'> <!-- 优先使用 IE 最新版本和 Chrome -->    <meta http-equiv="X-UA-C ...

  3. JS 加载html 在IE7 IE8下 可调试

    实际背景 就是都是HTML 公共头部底部  然后中间部分加载不同的HTML文件 有点跟模板引擎一样 jQuery 有个load函数 加载html文件的路径 获取html内容 到中间部分 正常下是不能用 ...

  4. git学习之旅

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d ...

  5. 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】

    先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量.如下图 如上程序中,在调用fn()函数时,函数体中第6 ...

  6. Hadoop里的数据挖掘应用-Mahout——学习笔记<三>

    之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X的笔记 由于平时对数据挖掘做的比较多,所以优先看Mahout方向视频. Mahout有很好的扩展性与容错性(基于H ...

  7. Test Regular Expressions Online with RegExr免费的正则表达式检验网站

    免费的正则表达式检验网站: http://www.regexr.com

  8. Swift3.0P1 语法指南——下标

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  9. php函数parse_url

    1.需求 了解parse_url的使用方法 2.实例 $uri = parse_url('http://dummy'.$_SERVER['REQUEST_URI']); var_dump($uri); ...

  10. JavaScript方法

    1.hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象.不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员.isPrototype ...