正文

GDI图形编程(3)

Windows移动游戏开发实战 作者:(美)Adam Dawes


 

注意:

有很多不同的模型可以用来指定颜色。在印刷业中最常用的模型为CMYK模型。“CMYK”是“Cyan(青色)、Magenta(洋红)、Yellow(黄色)与Key-black(黑色)”的缩写。青色,洋红与黄色是减色法三基色—— 这样命名是因为当加大颜色用量时,会减少反射光,从而形成一个更暗的颜色。在计算机中最常用的模型是RGB模型,是“Red(红色)、Green(绿色)与Blue(蓝色)”的缩写。红、绿、蓝是三原色,当将这三种颜色混合到一起会增强其亮度(所以,事实上,三原色混合到一起为白色)。.NET framework支持使用RGB模型来指定颜色。

三原色中的每个颜色分量都有256个色阶,所以我们可以从一个总共包含了16 777 216种不同颜色的色板上创建颜色(256×256×256 = 16 777 216)。这与现在几乎所有的PC桌面显示器所支持的色彩范围相同。由于每个颜色通道需要8位数据(用于存储0~255之间的值),所以被称为24位色。

然而,Windows Mobile设备通常使用不了全部这些颜色。虽然牺牲了色彩的细节,但避免了过度处理,并且减少了用来保存这些颜色所需的内存。这些设备的显示屏绝大部分是65 536色或262 244色。要得到65 536色,总共需要16位,用于红、绿、蓝的位数分别为5、6、5(绿色占的位数多是因为人眼对绿色比对蓝色和红色要敏感)。而262 244色总共需要18位,则每个颜色分量都为6位。

这样做尽管降低了颜色的细节,但为了一致性及将来的考虑,.NET颜色函数中红、绿、蓝各色的强度都为8位值。颜色精度的损失由设备自行处理,并不受操作系统的影响。将来更加快速和功能强大的设备出现后,我们可能会看到调色板中的颜色增加了,通过这种方式创建的颜色将自动利用那些可用的新增的颜色。

实际上在大多数情况下,16位色、18位色以及完整模式的24位色是很难区分的。

要使用RGB值来创建颜色,可以调用System.

Drawing.Color.FromArgb静态函数。该函数有不同的重载,我们这里要使用的函数是采用red、green以及blue作为参数。将各个颜色分量的值通过参数传入,就会得到您想要的Color对象。必须确保各个颜色分量的值都位于0~255之间,否则系统会抛出一个ArgumentOutOfRange异常。

本章配套下载代码中的3_1_ColorFromArgb项目演示了使用RGB值来创建颜色,并使用这些颜色在窗体中创建了一个渐变。可以用菜单项来选择渐变中使用哪种颜色。图3-2展示了一个程序的运行结果。

利用平滑的颜色渐变,使得有限的调色板看上去更加直观和清晰。您很可能会注意到渐变不是完全平滑的,而是由很多个几个像素宽的色带组成的。

最后要介绍的是FromArgb函数中的神秘参数分量A,它表示alpha值,用于控制颜色的透明度:完全不透明的颜色将会把后面的颜色遮盖掉,而半透明的颜色会使背景色仍然能够被看到。Windows Mobile中的GDI不支持alpha透明度,所以我们这里就不对它进行更详细地讨论了。在第10章介绍OpenGL ES时再对alpha的值进行仔细的研究。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号