我用photoshop做了程序的主界面,现在想把它加载到我用VC写的对话框程序界面上,请问高手如何实现。按钮加载图片的做法我会,但是如何在界面上加载是一样的吗?给代码高分,给方法送分,帮忙顶也有分。谢谢大家了。

解决方案 »

  1.   

    响应对话框的WM_PAINT 消息, 画上去就行了
      

  2.   

    codeguru 上有CPicture类   然后把加载的代码放到onpaint里就行了
      

  3.   

    OleLoadPicture, 加载常见的图片格式
      

  4.   

    CBitmap m_bmpVideoBackground; //在视频处画
    HBITMAP hbitmapVideo;
    hbitmapVideo=(HBITMAP)::LoadImage(NULL,D8Client->GetPath()+"IMAGES\\A\\1.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    m_bmpVideoBackground.Attach(hbitmap[0]); CPaintDC dc(this); 
            CRect rect;
    GetClientRect(&rect);
    dc.SetBkColor(RGB(222,223,222));
    CDC dcMem; 
    dcMem.CreateCompatibleDC(&dc); 
    BITMAP bitMap;

    m_bmpBackground.GetBitmap(&bitMap);
    CBitmap *pbmpOld=dcMem.SelectObject(&m_bmpBackground);
    dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
     dcMem.SelectObject(&m_bmpVideoBackground);
    dc.StretchBlt(dian[0][0],dian[1][0],200,200,&dcMem,0,0,200,200,SRCCOPY);
      

  5.   

    重载对话框的OnPaint函数,添加代码:
    CString strFilePathName="pic.bmp";

    CFile file(strFilePathName,CFile::modeRead|CFile::shareDenyWrite);
    CArchive ar(&file,CArchive::load|CArchive::bNoFlushOnDelete);
    CArchiveStream stream(&ar);
    HRESULT hr = OleLoadPicture((IStream*)&stream, 0, FALSE, IID_IPicture, (void **)&m_pPic);
    file.Close();
    //Display
    CRect ShowRect;
    CDC *pDC=GetDC();
    GetClientRect(&ShowRect);
    long lWidth,lHeight;

    m_pPic->get_Width((OLE_XSIZE_HIMETRIC*)&lWidth);
    m_pPic->get_Height((OLE_YSIZE_HIMETRIC*)&lHeight);
    CDC tempDC;
    tempDC.CreateCompatibleDC(pDC);
    CBitmap bmp;
    bmp.CreateCompatibleBitmap(pDC,ShowRect.Width(),ShowRect.Height());
    CBitmap *OldBmp=tempDC.SelectObject(&bmp);
    m_pPic->Render(tempDC, 0, 0, ShowRect.Width(), ShowRect.Height(),
    0, lHeight, lWidth, -lHeight, NULL);
    m_pPic->Release();
    pDC->BitBlt(ShowRect.left, ShowRect.top, ShowRect.Width(), ShowRect.Height(), &tempDC, 0, 0, SRCCOPY);
        tempDC.SelectObject(OldBmp);
    ReleaseDC(&tempDC); 
    bmp.DeleteObject();
        ReleaseDC(pDC);
        
    (变量声明:IPicture *m_pPic;
      CString strFilePathName;  )
      

  6.   

    也可以导入位图资源
    然后:
    CDC tempDC;
    tempDC.CreateCompatibleDC(pDC);
    CBitmap bmp;CBitmap *OldBmp=tempDC.SelectObject(&bmp);
        加载和显示位图!
      

  7.   

    #ifndef __AFXCTL_H__
    #include <afxctl.h>
    #endif
    #include <atlbase.h> CClientDC dc(this);
    CPictureHolder hd;
    HRESULT hr = ::OleLoadPicturePath(CComBSTR(PicPath),NULL,0,0,IID_IPicture,(LPVOID *)&hd.m_pPict);
    hd.Render(&dc,CRect(0,0,128,128),CRect(0,0,128,128));
    return CDialog::WindowProc(message, wParam, lParam);