[code=C/C++][/code]
HDC dc=::GetDC(NULL); //屏幕DC
int height,wide,size;
height=dib.GetHeight(); //24位位图高度(像素)
wide=dib.GetWidth(); //长度
BYTE *pData,*pData2;
pData=dib.GetData(); //获得24位图的像素数据域
BYTE b,g,r;
int lwide=(wide*24+31)/32*4; //每行为4字节的倍数
for(int i=0;i<wide;i++) //获取像素值
for(int j=0;j<height;j++)
{
pData2=pData+3*i+lwide*j;
b=*pData2;
g=*pData2+1;
r=*pData2+2;
::SetPixel(dc,100+j,100+i,RGB(r,g,b)); 逐点显示
}
以上是未压缩的24位位图的显示,但为什么这样显示出来的位图是黑白色?
=*pData2;
g=*pData2+1;
r=*pData2+2;
这个不对吧~每一点的值加1加2,所以出来黑白色(应该是偏向灰色的吧)
应该这么写吧~
b=*pData2;
g=*(pData2+1);
r=*(pData2+2);