void Cpes2010Dlg::ShowJpg(CString strPath, CDC *pDC)
{    
        IPicture *pPic;
LPVOID pvData;
IStream *pStm;
CFile file;
DWORD filelen;
file.Open(strPath,CFile::modeRead);
filelen=file.GetLength();
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,filelen);
if(hGlobal!=NULL)
{
if((pvData=GlobalLock(hGlobal))!=NULL)
{
file.Read(pvData,filelen);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);
}
}
OleLoadPicture(pStm,filelen,TRUE,IID_IPicture,(LPVOID*)&pPic);
long iwidth;
long iheight;
pPic->get_Width(&iwidth);
pPic->get_Height(&iheight);
CSize size(iwidth,iheight);

pDC->HIMETRICtoDP(&size);

pPic->Render(*pDC,0,0,size.cx,size.cy,0,iheight,iwidth,-iheight,NULL);
CSize sizeTotal;

pStm->Release();
pPic->Release();

这是我的代码,图片到是显示出来了,但是大小不统一,怎样才能缩放到统一大小啊?
还有,关于重画问题,小图片覆盖大图片,大图会有残留,这个有怎样解决啊?求帮助!!!

解决方案 »

  1.   

    用一个picture等控件来显示jpg图片等,然后设置picture控件大小
      

  2.   


    pPic->get_Width(&iwidth);
    pPic->get_Height(&iheight);贴图的时候不要根据图片大小来设置就是了   自己指定设置一个
      

  3.   


    =======================================================
    FreeLaxy, your backup.
    =======================================================
      

  4.   

     pPic->Render(*pDC,0,0,size.cx,size.cy,0,iheight,iwidth,-iheight,NULL);
    ============
    这里面不是有弃置宽高的参数吗?改成一样的不就行了。
      

  5.   

    其实很简单的,下面的代码就可以在显示时统一大小:
    CRect rect;
    GetClientRect(&rect);
    pPicture->Render(pDC->m_hDC,0,0,rect.Width(),rect.Height(),
    0,nHeight,nWidth,-nHeight,NULL);