首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

256色BMP图像显示有关问题,请

2011-12-26 
256色BMP图像显示问题,请高手指点!在下面的程序中,我想通过SetDIBitsToDevice把256灰度图像数组Image显示

256色BMP图像显示问题,请高手指点!
在下面的程序中,我想通过SetDIBitsToDevice把256灰度图像数组Image显示出来。
可是结果显示的总是一个带颜色的失真图像。请高手指点错在什么地方?
我一直以为可能是“bmi”设置的问题,但不知道怎么解决。
int   iWidth,   iHeight,   iBytesWidth;
iWidth   =   500;
iHeight   =   500;
iBytesWidth   =   (iWidth   %   4)   ?   (iWidth   /   4   +   1)   *   4   :   iWidth;
HANDLE   hMem   =   GlobalAlloc(GMEM_MOVEABLE,   iBytesWidth   *   iHeight   );
BYTE   *Image   =   (BYTE*)GlobalLock(hMem);//new   BYTE[iBytesWidth   *   iHeight   ];
//memset(Image,   100,   iBytesWidth   *   iHeight   );
BITMAPINFO   bmi;
ZeroMemory(&bmi,   sizeof(BITMAPINFO));
bmi.bmiHeader.biSize   =   sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth   =   iWidth;
bmi.bmiHeader.biHeight   =   iHeight;
bmi.bmiHeader.biPlanes   =   1;
bmi.bmiHeader.biBitCount   =   8;
bmi.bmiHeader.biCompression   =   BI_RGB;
::SetDIBitsToDevice(pDC-> GetSafeHdc(),   0,   0,   iWidth,   iHeight,   0,   0,   0,   iHeight,   Image,   &bmi,   DIB_RGB_COLORS);
GlobalUnlock(hMem);
GlobalFree(hMem);
delete   []Image;SPI_GETWHEELSCROLLLINES


[解决办法]
256就那样子,图像很难看。

热点排行