Quartz 2D 概览(参考苹果官网)

系统 1874 0

介绍一下Quartz 2D,主要资料来源于苹果官网;不足之处有请 大家拍砖。

Quartz 2D是iPhone OS和Mac OS X环境下的二维绘图引擎。借用Quartz 2D API,你可以接触到这样一些特性:基于路径的绘图,透明度绘图,遮盖,阴影,透明层,颜色管理,防锯齿渲染,生成PDF,以及PDF元数据相关处理。可能的时候,Quartz 2D会借助硬件的力量。

在Mac OS X下,Quartz 2D能与其它图形图像技术相结合——Core Image,Core Video,OpenGL,以及Quick Time。

类似的,在iPhone OS下的Quartz 2D也能与其它的图像和动画技术相结合——Core Animation,OpenGL ES,以及UIKit类。


1. 页面(Page)

Quartz 2D使用画笔模型——每一个绘图操作在一块输出画布上进行一层绘制(paint),这个画布就叫做页面。绘制在页面上的东西无法改动,除非修改该页面。

下图显示了“后来者居上”的遮盖顺序。页面可以是一张真正的纸(如果输出设备是打印机);可以是一张虚拟的纸(如果输出设备是pdf);甚至可以是一幅位图。


2. 绘制目标:图形内容(Graphics Context)


图形内容是一个复杂的数据类型(CGContextRef),用于封装Quartz用于绘图的信息。这些信息包括了绘图参数以及页面上的绘图的代表。


同一幅画可以绘制到不同的设备上,而只需要改变图形内容的,无需改变Quartz绘制顺序。你不需要自行针对设备进行计算——Quartz会替你完成这一切。

 




3. Quartz 2D的模糊数据类型(Opaque Data Type)

在图形内容之外,Quartz 2D还定义了一系列模糊数据类型,均以CG为前缀。其中三种数据类型如下图所示。

 




4. 图形状态(Graphics States)

Quartz 2D根据当前的图形状态来修改绘图结果。例如,当你调用函数来填充颜色时,你同时也就修改了储存在图形状态中的数值。其它常用的图形状态颜色包括线宽,当前位置,以及字体大小。


图形内容包含了一个堆栈,储存了图形状态。初建图形内容时,此堆栈为空。图形状态可以通过函数 CGContextSaveGState 和 CGContextRestoreGState 来保存和恢复。


5.Quartz 2D坐标

Quartz 2D的坐标体系如下图所示,原点在左下方。



考虑到不同的设备有着不同的图像能力,因此图形的位置和大小必需独立于设备来定义——这由当前变换矩阵(CTM)来完成。


6. 内存管理

几个简单实用的准则:

6.1 如果你创建或复制一个对象,该对象的retain值会加一;因此你也必需释放它。具体反映在带有Create或Copy的函数名当中。

6.2 反之,如果函数名中没有Create或Copy,你就不需要释放。

6.3 如果你不拥有一个对象但需要使用它,你可以retain之后再释放

Quartz 2D 概览(参考苹果官网)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论