当前位置: 代码迷 >> VC >> 256色BMP图像显示有关问题,请
  详细解决方案

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

热度:8331   发布时间:2013-02-25 00:00:00.0
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就那样子,图像很难看。