iOS DeveloperiOS 开发

Quartz 2D概述

2016-01-22  本文已影响224人  SHChen

Quartz 2D是iOS系统以及所有Mac OSX应用内核外的二维绘制引擎。可以使用* Quartz 2D* API来基于路径绘制、具有透明度、阴影、以及layer透明度、颜色、反走样渲染、生成PDF文件以及PDF文件的访问。Quartz 2D充分利用了图形硬件的性能。

在iOS系统中,Quartz 2D可以和其它的图形以及动画技术结合使用,其中包括核心动画、OpenGL ES以及UIKit

页面——page

Quartz 2D的呈像利用了绘制模型。在这个模型中,每个连续的绘制操作都会输出到一个layer画布上,通常称为page。页面的绘制可以覆盖更多的额外绘制操作来改。
图1 描述了画家模式的工作原理。图形上面,左边的图先绘制蓝色部分,然后绘制实心图形,实心图形覆盖了蓝色的除了边缘之外的其它部分,最终得到了图上所示的图形。而图形下面以完全不同的顺序进行绘制两个部分,也得到了相应的完全不同的图形。

画家模式.png

The Graphics Context——图形上下文

Graphics Context是一种复杂的(CGContextRef)数据类型,概述了将图片绘制到PDF、bitmap、或者window上展示的Quartz信息。
你可以将图形上下文想象成一个绘制的终点形式,如图2所示。当使用Quartz进行绘制的时候,所有的设备相关特征都包含在所使用的图形上下文当中。换句话说,你可以通过不同的图形上下文将同一个图片绘制到不同的外设上面。

drawing destination.png

应用中可用的图形上下文有:

Quartz 2D Opaque Data Types

Quartz 2DAPI定义了除了图形上下文以外的多种复杂数据类型。因为Quartz 2DAPI是Core Graphics框架的一部分,所以这种数据类型以及常规的操作都是以CG为开头的。

图3 描述的是Quartz 2D绘制的基础

basis.png

Quartz 2D中可用的数据类型主要有:

*Quartz 2D *坐标系

如图4 所示的Quartz 2D坐标系定义了绘制图形的范围。

坐标系.png

不同设备拥有不同的图形性能基础,图形的位置和大小必须以一个与设备无关方式来定义。例如,在屏幕展示设置上一英寸最多有96像素,但是打印机每英寸可以有300英寸。如果以设备层级定义坐标系,那么在这个设备上展示的图形很难再没有变形的情况下绘制在其它设备上,他们展示出来的效果要么是放大了要么是缩小了。
iOS系统坐标系如图5所示:

修正的坐标系.png

内存管理:对象所有权

Quartz使用Core Foundation内存管理模型,对象引用计数器。当一个对象被创建出来的时候,对象的引用计数器为1。当引用保留这个对象的时候就会使引用计数器+1,并且在释放该对象的时候会使引用计数器-1.当引用计数器的值变为0的时候,这个对象就被释放掉了。这种模式允许对象安全的分享其它对象的引用。
一个简单的规则就是:

上一篇 下一篇

猜你喜欢

热点阅读