下面的呼叫传回每个图素的色彩位元数:
大多数彩色图形显示设备使用多个色彩平面或每图素有多个色彩位元的设计,但是不能同时一齐使用这两种方式;换句话说,这两个呼叫必有一个传回1。显示卡能够表示的色彩数可以用如下公式来计算:
这个值与用NUMCOLORS参数得到的色彩数值可能一样,也可能不一样:
我提到过,256色的显示卡使用色彩调色盘。在那种情况下,以NUMCOLORS为参数时,GetDeviceCaps传回由Windows保留的色彩数,值为20,剩余的236种颜色可以由Windows程式用调色盘管理器设定。对於High-Color和True-Color显示解析度,带有NUMCOLORS参数的GetDeviceCaps通常传回-1,这样就无法得到需要的资讯,因此应该使用前面所示的带有PLANES和BITSPIXEL值的iColors公式。
在大多数GDI函式呼叫中,使用COLORREF值(只是一个32位元的无正负号长整数)来表示一种色彩。COLORREF值按照红、绿和蓝色的亮度指定了一种颜色,通常叫做「RGB色彩」 。32位元的COLORREF值的设定如图5-4所示。
注意最前面是标为0的8个位元,并且每种原色都指定为一个8位元的值。理论上,COLORREF可以指定二的二十四次方种或一千六百万种色彩。
这个无正负号长整数常常称为一个「RGB色彩」。Windows表头档案WINGDI.H提供了几种使用RGB色彩值的巨集。RGB巨集要求三个参数分别代表红、绿和蓝值,然後将它们