如题,使用MFc开发的。我想的的一个方法是是把资源位图提取出来保存到一个位图文件中再用Bitmap bmp(filepath)载入,但是感觉太繁琐,有没有更简单的方法。之前搜到一篇文章说使用下面的方法就可以,
CBitmap bmp;
bmp.LoadImage(IDB_BITMAP1);
Bitmap bm((HBITMAP)bmp);
但是实测不能用GDI+BitmapMFC

解决方案 »

  1.   

    既然是GDI+ 就直接 使用Image*
      

  2.   

    不是MAKEINTRESOURCE( IDB_BITMAP1 )么?
      

  3.   

    GDI+直接用image ,没有必要转为为位图的
      

  4.   

    Image *m_pImageBG;
    ImageFromIDResource(IDR_BG,_T("PNG"),m_pImageBG);BOOL ImageFromIDResource(UINT nID, LPCTSTR sTR, Image *&pImg)
    {
    HINSTANCE hInst = AfxGetResourceHandle();
    HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type
    if (!hRsrc)
    return FALSE; // load resource into memory
    DWORD len = SizeofResource(hInst, hRsrc);
    BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
    if (!lpRsrc)
    return FALSE; // Allocate global memory on which to create stream
    HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);
    BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
    memcpy(pmem,lpRsrc,len);
    IStream* pstm;
    CreateStreamOnHGlobal(m_hMem,FALSE,&pstm); // load from stream
    pImg=Gdiplus::Image::FromStream(pstm); // free/release stuff
    GlobalUnlock(m_hMem);
    pstm->Release();
    FreeResource(lpRsrc);
    return TRUE;
    }