我有一个像素数组,我需要转换为HBITMAP才能在窗口中显示它.我尝试使用CreateDIBitmap()但我没有BMP标头.我尝试根据MSDN文档手动构建它们,但这不起作用.
这是我的代码看起来如何
HBITMAP hBitmap
char pixels[160*120]; // White grayscale image of size 160x120
memset(pixels,255,sizeof(pixels));
BITMAPINFOHEADER bmih;
bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biWidth = 160;
bmih.biHeight = -120;
bmih.biPlanes = 1;
bmih.biBitCount = 8;
bmih.biCompression = BI_RGB ;
bmih.biSizeImage = 0;
bmih.biXPelsPerMeter = 10;
bmih.biYPelsPerMeter = 10;
bmih.biClrUsed =0;
bmih.biClrImportant =0;
BITMAPINFO dbmi;
dbmi.bmiHeader = bmih;
dbmi.bmiColors->rgbBlue = 0;
dbmi.bmiColors->rgbGreen = 0;
dbmi.bmiColors->rgbRed = 0;
dbmi.bmiColors->rgbReserved = 0;
void* bits = (void*)&(pixels[0]);
hBitmap = CreateDIBitmap(localDC, &bmih, CBM_INIT, qB.bmBits, &dbmi, DIB_RGB_COLORS);
Run Code Online (Sandbox Code Playgroud)
现在我得到一个非NULL的hBitmap,它很好,但它总是显示黑色图像,好像它没有指向像素数组.我使用代码检查了它
BITMAP qB; …Run Code Online (Sandbox Code Playgroud)