现在的位置: 首页 > 综合 > 正文

iphone ios Quartz 2d简介,教程

2013年07月08日 ⁄ 综合 ⁄ 共 3295字 ⁄ 字号 评论关闭

官方文章:http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-TPXREF101


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会替你完成这一切。


下面这些Graphics Context再程序中可用

1)bitmap graphics context 允许再bitmap上绘制RGB color, CMYK color, 或者灰度值。Bitmap是一个像素句型数组(或者叫光栅raster),每一个像素表示图像中的一个点。Bitmap
images同时也称为sampled (采样)images。见 “Creating
a Bitmap Graphics Context.”

2)pdf graphics context 见 “Creating
a PDF Graphics Context.”

3)window
graphics context 允许你绘制内容到window上。见
“Creating
a Window Graphics Context in Mac OS X”
 for details.

4)layer context(CGLayerRef)is
an offscreen drawing destination associated with another graphics context. It is designed for optimal performance when drawing the layer to the graphics context that cr
eated
it. A layer context can be a much better choice for offscreen drawing than a bitmap graphics context. See “Core
Graphics Layer Drawing.”

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

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


The opaque data types available in Quartz 2D include the following:

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之后再释放。




抱歉!评论已关闭.