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

从一个bmp图片的buffer,怎么生成HBITMAP的东东

2012-09-01 
从一个bmp图片的buffer,如何生成HBITMAP的东东我有一个bmp文件,我现在已经通过fopen(bmp文件).得到:void*

从一个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,然后

C/C++ code
            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; 

热点排行