高级会员

- 积分
- 579
- 金钱
- 579
- 注册时间
- 2019-8-4
- 在线时间
- 187 小时
|

楼主 |
发表于 2020-1-2 10:42:25
|
显示全部楼层
if(color_byte==3) //24位颜色图
{
switch (rgb)
{
case 0:
color=bmpbuf[count]>>3; //B
break;
case 1:
color+=((u16)bmpbuf[count]<<3)&0X07E0;//G
break;
case 2 :
color+=((u16)bmpbuf[count]<<8)&0XF800;//R
break ;
}
}
else if(color_byte==2) //16位颜色图
{
switch(rgb)
{
case 0 :
if(biCompression==BI_RGB)//RGB:5,5,5
{
color=((u16)bmpbuf[count]&0X1F); //R
color+=(((u16)bmpbuf[count])&0XE0)<<1; //G,左移1位只是因为显示屏里面G占用6位
}
else //RGB:5,6,5
{
color=bmpbuf[count]; //G,B
}
break ;
case 1 :
if(biCompression==BI_RGB)//RGB:5,5,5
{
color+=(u16)bmpbuf[count]<<9; //R,G,第二个字节抛弃掉了最高位
}
else //RGB:5,6,5
{
color+=(u16)bmpbuf[count]<<8; //R,G
}
break ;
}
}
else if(color_byte==4)//32位颜色图
{
switch (rgb)
{
case 0:
color=bmpbuf[count]>>3; //B,低5位
break;
case 1:
color+=((u16)bmpbuf[count]<<3)&0X07E0;//G,高6位
break;
case 2 :
color+=((u16)bmpbuf[count]<<8)&0XF800;//R,低5位
break ;
case 3 :
//alphabend=bmpbuf[count];//不读取 ALPHA通道
break ;
}
24位颜色图和32位好像一样耶 |
|