首先,什么是Core Graphics和Quartz 2D?

Core Graphics:是基于Quartz 2D绘图引擎的一个C语言的API绘图框架。它也是iOS开发中最基本的框架(Framework)之一。两点原因,第一是该框架是每一个iOS应用最初被建立时,就被系统默认添加的三个框架(Foundation、UIKit、Core Graphics)之一;另一点是,我们平时常见的各种UIKit框架提供的UI控件,实际上都是由Core Graphics进行绘制的。

Quartz 2D:是一个绘图引擎,它被Core Graphics所封装所包含,它是Core Graphics的一部分。因此我们一般都是用CGxxxx命名的函数进行绘图。

 

其次,在哪里绘图?

在图形上下文对象中绘图,在Quartz 2D中的绘图上下文可以是位图Bitmap、PDF、窗口Window、层Layer、打印对象Printer。最常见的,我们在UIView和UIView子类上绘图,其实是在系统为我们已经准备好的一个图形上下文CGContextRef对象上绘图。这个CGContextRef对象只能在drawRect函数中获取,而且一定是自动调用的drawRect函数。(假如你自己手动调用该函数,将无法获取图形上下文CGContextRef对象,从而也就无法成功绘图。当然,这样做并不会造成app崩溃crash,或者其他致命错误,但是因为无法绘图,因此这样做是毫无意义的)。

点、线、面的构建

绘图的步骤:(在drawRect函数中)

1.获取绘图上下文

2.创建并设置路径

3.将路径添加到上下文

4.设置上下文状态

5.绘制路径

6.释放路径

(这里借鉴了 http://www.cnblogs.com/kenshincui/p/3959951.html 的表述)

Core Graphics框架 利用Quartz 2D绘图的更多相关文章

  1. Core Graphics框架是Quartz的核心,也是内容描画的基本接口。

    Core Graphics框架是Quartz的核心,也是内容描画的基本接口.

  2. iOS绘图UIBezierPath 和 Core Graphics框架

    前言 iOS系统本身提供了两套绘图的框架,即UIBezierPath 和 Core Graphics.而前者所属UIKit,其实是对Core Graphics框架关于path的进一步封装,所以使用起来 ...

  3. iOS基础 - Quartz 2D绘图

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

  4. Core Graphics框架

    在iOS中常用的框架是Quartz 2D,它是Core Graphics框架的一部分,是一个强大的二维图像绘制引擎.我们日常开发所用到的UIKit的组件都是由Core Graphics框架进行绘制的. ...

  5. Quartz 2d绘图

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

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

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

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

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

  8. 在drawRect:方法中绘制图片,文字以及Core Graphics 框架的了解

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...

  9. 1.1 Quartz 2D 绘图

    本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末 如果觉得本文内容过长,请前往本人 “简书”   Quartz2D 绘图主要步骤:   1. 获取[图形上下文]对象 —— (拿到草稿纸 ...

随机推荐

  1. MVC ViewData和ViewBag 参数名一样表示同一个值

    @ViewData["MenuName"] 和 @ViewBag.MenuName 表示同一个值

  2. JS 实现1!+2!+3!+4!+5!+....+n!

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. MySQL 视图触发器事务存储过程函数

    事务  致命三问 什么是事务:开启了一个包含多条SQL语句的事务,这些SQL语句要么都执行成功,要么有别想成功:例如A向B转账,二人账户并不属于一家银行,在转账过程中由于网络问题,导致A显示转账 成功 ...

  4. 使用awk提取字符串中的数字或字母

    1.提取字符串中的数字 $ echo 'dsFUs34tg*fs5a%8ar%$#@' |awk -F "" ' { for(i=1;i<=NF;i++) { if ($i ...

  5. C语言提高 (4) 第四天 数组与数组作为参数时的数组指针

    1昨日回顾 const int 和 int const是一样的 const char *p;值不变 char * const p; 指针不能变 编译器对参数的退化: 第三种模型: 三级指针 三级指针局 ...

  6. Linux学习二:基于CentOS 6.5的网络配置

    查看网卡信息: ifconfig [root@hadoop01 ~]# ifconfig [正常的显示信息] eth0 Link encap:Ethernet HWaddr :0C::::5C ine ...

  7. MYSQL: sql中某一个字段内容为用逗号分割的字符串转换成多条数据

    场景: 表名:testsuer id     name 1       小红,小李,李红,小法 要结果值为: 1     小红 1     小李 1     李红 1     小法 MYSQL函数解释 ...

  8. java自带线程池和队列详细讲解,android中适用

    Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...

  9. 【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 定义dis[i][j]表示到达i这个点. 用掉了j次去除边的机会的最短路. dis[1][0]= 0; 在写松弛条件的时候. 如果用 ...

  10. 2015 Multi-University Training Contest 7 hdu 5378 Leader in Tree Land

    Leader in Tree Land Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...