JAY*_*MIN 2 graphics colors visual-c++
如果有整数值,例如 86那么我如何从这个整数值中提取r,g,b分量....?我正在研究Visual C++ 2008 express版.谢谢..
Jac*_*ack 11
通常(我通常会重复,因为你没有在你的问题中指定太多)颜色被打包成一个带有RGBA组件的4字节整数.
你需要做的是掩盖和移动,例如:
int color = 0xRRGGBBAA;
u8 red = (color & 0xFF000000) >> 24;
u8 green = (color & 0x00FF0000) >> 16;
u8 blue = (color & 0x0000FF00) >> 8;
Run Code Online (Sandbox Code Playgroud)
这假设我指定的编码类型,但可以根据您的编码进行修改.
编辑: 在您的示例中,您谈到了0-255的值.目前尚不清楚组件是否为2位大小(每个组件4个强度值).
在这种情况下,方法仍然保持不变,但你只有几种颜色:
u8 color = 86;
// so you take 2 bits and multiply by 64 to possibly have intensities: 0, 64, 128, 192
u8 red = ((color & 0xC0) >> 6) * 64;
u8 green = ((color & 0x30) >> 4) * 64;
u8 blue = ((color & 0x0C) >> 2) * 64;
Run Code Online (Sandbox Code Playgroud)
编辑2:也许你的颜色用调色板索引,在这种情况下你应该有一个存储调色板本身的数组,你从文件中读取的字节应该是存储在其他地方的颜色的索引.
| 归档时间: |
|
| 查看次数: |
15793 次 |
| 最近记录: |