不同的设备(显示器、打印机、扫描仪、摄像头)处理颜色的方式是不同的。每种设备都有其所能支持的颜色值范围。一种设备能支持的颜色可能在其它设备中无法支持。
为了有效的使用颜色及理解Quartz 2D中用于颜色及颜色空间的函数,我们需要熟悉在Color Management Overview文档中所使用的术语。该文档中讨论了色觉、颜色值、设备依赖及设备颜色空间、颜色匹配问题、再现意图(rendering intent)、颜色管理模块和ColorSync。
在本章中,我们将学习Quartz处理颜色和颜色空间,以及什么是alpha组件。本章同时也讨论如下问题:
创建颜色空间
创建和设置颜色
设置再现意图
颜色与颜色空间
Quartz中的颜色是用一组值来表示。而颜色空间用于解析这些颜色信息。例如,表4-1列出了在全亮度下蓝色值在不同颜色空间下的值。如果不知道颜色空间及颜色空间所能接受的值,我们没有办法知道一组值所表示的颜色。
如果我们使用了错误的颜色空间,我们可能会获得完全不同的颜色,如图4-1所示。
颜色空间可以有不同数量的组件。表4-1中的颜色空间中其中三个只有三个组件,而CMYK有四个组件。值的范围与颜色空间有关。对大部分颜色空间来说,颜色值范围为[, ],。例如,全亮度蓝色值在Quartz的RGB颜色空间中的值是(0, 0, )。在Quartz中,颜色值同样有一个alpha值来表示透明度。在表4-1中没有列出该值。
alpha值
alpha值是图形状态参数,Quartz用它来确定新的绘图对象如何与已存在的对象混合。在全强度下,新的绘图对象是不透明的。在0强度下,新的绘图对象是完全透明的。图4-2显示了5个大的方形,, , , 。随着大方形逐渐变得透明,底下的小的不透明的方形逐渐显现出来。
我们可以将两个对象绘制到page上,而page可以在渲染前通过设置全局的graphics context来设置自己的透明度。图4-。
在标准混合模式(图形状态的默认模式)下,Quartz使用下面的公式来混合源颜色和目标颜色的组件:
复制代码
destination = (alpha * source) + (1 - alpha) * destination
其中源颜色是新绘制的颜色,目标颜色是背景颜色。该公式可用于新绘制的形状和图像。
对于对象透明度来说,,。。我们可以为所有接受颜色的程序指定一个alpha值作为颜色值的最后一个组件。同样也可以使用CGContextSetAlpha函数来指定全局的alpha值。记住,如果同时设置以上两个值,Quartz将混合全局alpha值与对象的alpha值。
为了让page完全透明,我们可以调用CGContextClearRect函数来清除图形上下文(graphics context)的alpha通道。例如,我们可以在给图标创建一个透明遮罩或者使窗口的背景透明时,采用这种方法。
创建颜色空间
Quartz支持颜色管理系统
Quartz 2D IOS软件开发编程指南之颜色和颜色空间(精选) 来自淘豆网m.daumloan.com转载请标明出处.