首页 理论教育 探究颜色:RGB、RYB和透明度

探究颜色:RGB、RYB和透明度

时间:2023-06-23 理论教育 版权反馈
【摘要】:在动手写15.2.1中通过cgColor获取一个CGColor的值:UKit提供了许多基本的颜色,例如white、black、gray等,以方便使用。首先,RGB三种颜色叠加会变成白色,如图15.2.2所示;而RYB叠加之后是深黑色而不是黑色,需要额外给黑色配上别的信息,如图15.2.3所示。图15.2.3RYB示意图透明度作为RGB色彩模型的一个额外参数,用于当一种颜色盖在另一种颜色上面时,提供计算最终展示颜色的方式。

探究颜色:RGB、RYB和透明度

颜色是绘图中不可缺少的一部分,设备(显示器、打印机、扫描仪、照相机)会以不同的方式处理颜色,每个设备都有自己的颜色范围。设备会以自己的方式去显示颜色,但在一台设备上生成的颜色可能无法在其他设备上生成。要有效地处理颜色并理解Quartz 2D用于颜色空间和颜色的函数,我们应该熟悉iOS中颜色的实现机制。

UIKit框架为我们提供了一个UIColor类来表示颜色,但是不能在Core Graphics函数调用中直接使用UIColor实例作为参数。不过UIColor包含了一个名为“cgColor”的属性,它是Core Graphics中的类型CGColor(而这也正是Core Craphics需要的参数类型),因此可以使用UIColor实例的cgColor属性来获得与UIColor对应的CGColor的值。在动手写15.2.1中通过cgColor获取一个CGColor的值:

UKit提供了许多基本的颜色,例如white、black、gray等,以方便使用。如果需要定制颜色,那么就得了解iOS设备上一些关于颜色的基础知识。

在计算机图像处理中,显示在屏幕上的颜色都有一个颜色模型,每个模型都是将真实世界的颜色与计算机能够处理的数值进行近似的映射。最常用的方式是使用四个值分别代表一种颜色的红、绿、蓝的比例以及透明度。在Quartz中,这些值都是CGFloat类型,并且这四个值的取值范围在0.0~1.0之间。这就是最常用的RGBA(Red、Green、Blue、Alpha)模型。

如果没有透明度,RGB也是一种色彩模型,它是一种三原色模型,但它与美术中的RYB红黄蓝的三原色有一点区别。至于为什么选择RGB而不是RYB,很大程度上不是取决于物理特性,而是取决于生物特性。首先,RGB三种颜色叠加会变成白色,如图15.2.2所示;而RYB叠加之后是深黑色而不是黑色,需要额外给黑色配上别的信息,如图15.2.3所示。其次,人眼对黄绿色、绿色和蓝紫色这三种颜色是最为敏感的,有三类相应的细胞会对此有刺激反应。虽然RGB不是这三种颜色,但是RGB的每种颜色会分别刺激到这三类细胞。(www.xing528.com)

图15.2.2 RGB示意图 

图15.2.3 RYB示意图

透明度作为RGB色彩模型的一个额外参数,用于当一种颜色盖在另一种颜色上面时,提供计算最终展示颜色的方式。从这意义上来说,Alpha不是一个颜色参数,带上Alpha参数的颜色模型就是RGBA,也就是目前iOS中最常用的了。其他还有HSV、HSL、CMYK等等颜色模型,读者有兴趣也可以去查阅一下相关资料。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈