!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    可以使用CImage类来加载png图片~
      

  2.   

    加载到对话框背景上何须用CImage,直接LoadImage,然后贴到背景上不就行了么
      

  3.   

    CImage对象load一张png图片,如果你需要透明的话,用循环做一下透明处理,如需,不必做,然后在OnPaint里m_img.Draw(dc, 0, 0, m_img.GetWidth(), m_img.GetHeight()) OK了~。如果你想转成CBitmap对象,也简单,bmp.Attach(m_img.Detach())一句话搞定,这样你可用他创建画刷等了。
      

  4.   

    可以使用GDI来加载显示:
    HINSTANCE   hInst   =   AfxGetResourceHandle(); 
    HRSRC   hRsrc   =   ::FindResource   (hInst, 
    MAKEINTRESOURCE(资源中PNG图片ID), 
    _T("PNG图片的资源文件夹名称"));   
    if   (!hRsrc) 
    return   ; 

    //   load   resource   into   memory 
    DWORD   len   =   SizeofResource(hInst,   hRsrc); 
    BYTE*   lpRsrc   =   (BYTE*)LoadResource(hInst,   hRsrc); 
    if   (!lpRsrc) 
    return   ; 

    //   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这是关键一句,通过FromStream返回以各Image*,然后在Graphic的DrawImage地方调用就行了! 
    Image *pImg = NULL ; 
    pImg=Gdiplus::Image::FromStream(pstm); 

    //   free/release   stuff 
    GlobalUnlock(m_hMem); 
    pstm-> Release(); 
    FreeResource(lpRsrc); 

    Graphics graphics( GetDC()->m_hDC );
    graphics.DrawImage(pImg, Rect(160, 28, pImg->GetWidth(), pImg->GetHeight()), 
    0, 0, pImg->GetWidth(), pImg->GetHeight(), UnitPixel);//, &imageAtt);
      

  5.   

    对话框你贴透明背景,用什么用呀,是不是对话框上的按钮或其他的的东西贴透明背景呀。我这里有往按钮上贴贴png图片的,用的cximage+png。