以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018
有关本章博客的代码实现,大家可以参考我的这遍博客:IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
iPhone之Quartz 2D系列--颜色和颜色空间(4)Color and Color Spaces
不同的设备(显示器、打印机、扫描仪、摄像头)处理颜色的方式是不同的。每种设备都有其所能支持的颜色值范围。一种设备能支持的颜色可能在其它设备中无法支持。
为了有效的使用颜色及理解Quartz 2D中用于颜色及颜色空间的函数,我们需要熟悉在Color Management Overview文档中所使用的术语。该文档中讨论了色觉、颜色值、设备依赖及设备颜色空间、颜色匹配问题、再现意图(rendering intent)、颜色管理模块和ColorSync。
在本章中,我们将学习Quartz处理颜色和颜色空间,以及什么是alpha组件。本章同时也讨论如下问题:
- 创建颜色空间
- 创建和设置颜色
- 设置渲染意图
Quartz中的颜色是用一组值来表示。而颜色空间用于解析这些颜色信息。例如,表4-1列出了在全亮度下蓝色值在不同颜色空间下的值。如果不知道颜色空间及颜色空间所能接受的值,我们没有办法知道一组值所表示的颜色。
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_38018_75a129447ba58b3.png)
如果我们使用了错误的颜色空间,我们可能会获得完全不同的颜色,如图4-1所示。
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_38018_f55dbb1b4b8a307.png)
颜色空间可以有不同数量的组件。表4-1中的颜色空间中其中三个只有三个组件,而CMYK有四个组件。值的范围与颜色空间有关。对大部分颜色空间来说,颜色值范围为[0.0, 1.0],1.0表示全亮度。例如,全亮度蓝色值在Quartz的RGB颜色空间中的值是(0, 0, 1.0)。在Quartz中,颜色值同样有一个alpha值来表示透明度。在表4-1中没有列出该值。