CoreGraphics Overview of Quartz 2D

Overview of Quartz 2D

Quartz 2D 是一个二维绘画引擎, 支持iOS环境和Mac OS X 应用环境, 我们可以利用Quartz 2D应用编程接口(Application programming Interface)API来实现一些功能, 例如: 基于路径的绘画, 绘制透明度, 渲染颜色, 画阴影, 绘制透明层, 颜色管理, 抗锯齿渲染, 生成PDF文件, 和PDF数据访问, 只要有可能, Quartz 2D可以充分的利用制图硬件的功能.

在Mac OS X 中, Quartz 2D能够和其他制图和绘画技术一起工作, --Core Image, Core Video, OpenGL, 和 QuickTime. 我们可以在Quartz中利用 QuickTime制图生成器的 GraphicsImportCreateCGImage 函数来创建一个图片.详情见QuickTime参考文档. Moving Data Between Quartz 2D and Core Image in Mac OS X  描述了我们怎么给Core Image 提供一个图片, Core Image 是一个支持图像生成的框架.

同样, 在iOS中, Quartz 2D可以和所有可用的制图和动画技术一起工作, 例如: Core Animation, OpenGL ES, 和UIKit类.

The Page

Quartz 2D运用画家的模式来绘图, 在画家模式中, 每一个将一层的油漆(Paint)渲染输出到画布(canvas)的操作, 我们通常称之为page. page上渲染的图像可以通过覆盖更多额外的绘画操作所更改. 也就是说绘画在page上的对象不能够被更改, 除非通过覆盖更多的paint. 这个模式允许我们从一个小数量的元图, 构造出非常复杂的图片.

图 1-1 向我们展示了画家模式的工作原理, 正如我们所看到的, 在画家模式中, 绘画的顺序是多么的重要. 

Page 可能是一个真实的纸(如果输出设备是打印机), 也可以是一个虚拟的纸(如果输出设备是PDF文件), 他甚至还可以是一个位图. page的性质是取决于我们给它提供的graphics.

Drawing Destinations: The Graphics Context

graphics context 是一个不透明的数据类型(CGContextRef), 他包含了Quartz绘画到输出设备的绘画信息, 比如: PDF文件, 位图, 或者显示窗口. graphics context 包含了绘图的参数和paint在page上的表现形式. 在Quartz中的所有对象的绘制, 和它包含的对象, 必须有 graphics context.

我们可以把graphics context 想象成绘制图像的目的地, 就想图片1-2所示, 当我们利用Quartz绘画时, 所有特定设备的特征都被包含在我们所使用的特别类型的graphics context中. 我们不需要进行任何特定设备的计算, Quartz帮我们做了这些事.

这些graphics contexts 可以被我们的应用程序所使用:
  • bitmap graphics context 允许我们绘制RGB颜色, CMYK颜色, 和灰度到bitmap, Bitmap 是一个有像素点组成的矩阵(或者光栅), 每一个像素点代表了图像的一个点. 位图也被叫做是采样图像, 详情看Creating a Bitmap Graphics Context.
  • PDF graphics context 允许我们创建一个PDF文件, 在PDF文件中, 我们的绘图被表现为一系列的命令, 这有一些PDF文件和位图的区别:
  1. PDF不像位图, 它可能包含多个page.
  2. 当你在不同设备上从一个PDF文件中绘画一页时, 得到的是被该设备的呈现特征所优化过的图片.
  3. PDF文件是与独立的性质不相关的, 它可以无限增减,并且保证没有丢失图像的细节. 请参考Creating a PDF Graphics Context.
  • window graphics context 我们可以绘画到window上, 请注意, 因为Quartz 2D是制图引擎, 并不是窗口管理系统, 我们使用应用程序的框架来获取到window的graphics context. 请参考 Creating a Window Graphics Context in Mac OS X 
  • layer context(CGLayerRef) 是一个屏幕以外的绘画目的地, 它与另一个graphics context 关联, 它是为了提高性能. 对于屏幕以外的绘画制图, 与bitmap graphics context 相比, 它是更好的选择. 请参考Core Graphics Layer Drawing.
  • 当我们想要在Mac OS X中打印的时候, 我们把内容传递给由打印框架管理的PostScript graphics contest
  • 得到




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值