VC6.0中使用ciamge类显示JPG图片
想在VC.6.0的MFC搭建的dialog窗体上显示jpg图片,开始用picture控件,都说会很复杂,推荐用cimage类,可是发现这个在vc6.0里面没有。
所以现在是求傻瓜式的操作步骤,要用到的文件能传给我或者给我网址我自己去下(不是我懒,网上找了很多都没有),工程要怎么设置,也能说清楚点。
效果实现立马结账,拜谢!!
[解决办法]
BOOL ShowJpg(CDC* pDC, CString strPath, int x, int y){ IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; if (file.Open(strPath,CFile::modeRead)&& file.GetStatus(strPath,fstatus)&& ((cb = fstatus.m_size) != -1)) { HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); //从堆中分配一定数目的字节 LPVOID pvData = NULL; if (hGlobal != NULL) { pvData = GlobalLock(hGlobal); if (pvData != NULL) { file.ReadHuge(pvData, cb); GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); } } }else { return false; } IPicture *pPic; if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic))) { OLE_XSIZE_HIMETRIC jpgWidth; OLE_YSIZE_HIMETRIC jpgHeight; pPic->get_Width(&jpgWidth); pPic->get_Height(&jpgHeight); double fX,fY; fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)jpgWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0); fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)jpgHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0); CRect rect; GetClientRect(&rect);if (fX<rect.Width() && fY<rect.Height()){pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,jpgHeight,jpgWidth,-jpgHeight,NULL);}else {pPic->Render(*pDC,x,y,rect.Width(),rect.Height(),0,jpgHeight,jpgWidth,-jpgHeight,NULL);} } return true;}
[解决办法]
CDC *pDC = GetDC();ShowJpg(pDC,"1.jpg",0,0);ReleaseDC(pDC);