从一个bmp图片的buffer,如何生成HBITMAP的东东
我有一个bmp文件,我现在已经通过fopen(bmp文件).得到:
void* buffer; buffer里存的就是这个完整的bmp文件的内容。
有什么办法可以通过这个buffer得到一个HBITMAP?
注:我已知道从Res和文件加载到HBITMAP里。 现在由于某种原因,必须从buffer中生成一个bimtap。再BitBlt到DC上去。
最好有代码,在线等.谢谢
[解决办法]
这些结构处理文件中的调色版
BITMAPINFOHEADER
BITMAPINFO
最后调用
CreateDIBitmap 得到 HBITMAP
msdn 搜索 CreateDIBitmap 应该有结果
[解决办法]
你光有data是不够的,最起码还要知道图片的尺寸和位深等信息,然后够造个bitmapheader出来,再配个data部分通过createdibitmap就OK了
[解决办法]
比如你先用CFile类读入一张图片到 m_pBMPbuffer,然后
HBITMAP hBmp; LPSTR hDIB,lpBuffer = m_pBMPBuffer; LPVOID lpDIBBits; BITMAPFILEHEADER bmfHeader; DWORD bmfHeaderLen; bmfHeaderLen = sizeof(bmfHeader); strncpy((LPSTR)&bmfHeader,(LPSTR)lpBuffer,bmfHeaderLen); if (bmfHeader.bfType != (*(WORD*)"BM")) return NULL; hDIB = lpBuffer + bmfHeaderLen; BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ; BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ; lpDIBBits=(lpBuffer)+((BITMAPFILEHEADER *)lpBuffer)->bfOffBits; CClientDC dc(this); hBmp = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS); return hBmp;