 |
可以使用“或”、“与”、移位等二进制运算来达到你的目的。
假如有一个16bit的颜色值,其各分量如下:
red: 5位, 00011(二进制,下同)
green: 6位, 001011
blue: 5位, 00101
其组成的16位数为(二进制):
0001 1001 0110 0101
如果要获得这个16位的R分量,可以这样
0001 1001 0110 0101 &
1111 1000 0000 0000
---------------------
0001 1000 0000 0000
然后将得到的0001 1000 0000 0000向右移11位就可以了。
这样如果我们的16位像素为pixel,获得其RGB分量的方法如下:
BYTE red, green, blue;
red = ((pixel & 0xF800) >> 11);
green = ((pixel & 0x07E0) >> 5);
blue = pixel & 0x001F;
反过来,如果要组成一个16位数,可以这样:
Pixel = (r << 11) | (g << 5) | b;
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 图形、图象, picture, graph, image, draw。
|