我这段代码怎么老是不显示呢?
static CImage image;
if( image.Load(_T("2.jpg"))!=S_OK )
return;// m_wndPicture是CStatic类型
CRect rect;
m_wndPicture.GetClientRect(&rect);//m_wndPicture.SetBitmap((HBITMAP)image);
//m_wndPicture.Invalidate();
image.Draw(m_wndPicture.GetDC()->m_hDC,0,0,image.GetWidth(),image.GetHeight());我想在Static控件中显示PNG图片,据说用GDI+可以,找了点资料,但是不成功

解决方案 »

  1.   

    参考
    http://www.vckbase.com/document/viewdoc/?id=1745
      

  2.   


    USES_CONVERSION;
    wchar_t *pwszPath = A2W("d:\\1.png");
    Bitmap* pBmp = Bitmap::FromFile(pwszPath, TRUE);
    if(pBmp && Ok == pBmp->GetLastStatus())
    {
       HDC  hDC = dc.GetSafeHdc();
       Graphics   grp(hDC);
       grp.DrawImage(pBmp, 552, 7, 102, 117);
    }
    if (pBmp) delete pBmp;
      

  3.   

    还是不行,每次pBmp都是NULL
    我路径设置对了的
      

  4.   

    我跟踪了下,是加载成功了
    想在static里绘制
      

  5.   

    在哪里调用的?判断Draw的返回值。
      

  6.   

    我在OnPaint里绘制的,跟踪了下,发现确实显示了一下,然后就消失了~
    情况特殊阿
      

  7.   

    那是由于刷新机制,你绘制的图形又被覆盖了。可以重载静态控件,在其OnPaint中用CPaintDC获取的dc来绘制(在OnPaint中不要用GetDC);或者,在你的代码中加上
    m_wndPicture.ValidateRect(NULL)试试。