我看了一些代码
好像为了显示JPG图像,大家都是先把JPG转换成BMP,然后显示出来能不能直接就显示JPG图像?
好像为了显示JPG图像,大家都是先把JPG转换成BMP,然后显示出来能不能直接就显示JPG图像?
解决方案 »
- 嵌在WEB里面的ActiveX如何传结构型参数?
- 工具条停靠,我能理解,但是主框架窗口停靠,是什么意思呢?
- DialogBoxParam问题,急。。。
- 请问在CListCtrl里面如何居中显示图片
- 关于DLL中的对话框一旦加入OCX控件就不能显示的问题???急!!
- 高分求教:如何能正确获取sockaddr中的ip地址?
- ★★★★怎样得到整个弹出菜单的HWND(在线等待……第一个答对满分相送)★★★★★
- vc中gui程序要开cui输出,怎么办?
- 如何在多视中每个子窗口中Dock Window?
- 为什么类里面定义的某个属性,在同一个类里面无法赋值?
- 计算机网络通讯介质种类?它们都有些什么优缺点?
- 英文好的高手进来,帮帮小弟翻译一下,在线等待,解决问题立即给分!【斑竹留情,VC版高手多】
http://www.codeproject.com/bitmap/cpicture.asp
http://www.codeproject.com/bitmap/pictureshow.asp
{
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
DWORD dw=0;
if (file.Open(JpgFileName,CFile::modeRead)&&file.GetStatus(JpgFileName,fstatus)&&((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
long ltx=MAP_LOGHIM_TO_PIX(hmWidth, GetDeviceCaps(::GetDC(m_hWnd), LOGPIXELSX));
long lty=MAP_LOGHIM_TO_PIX(hmHeight, GetDeviceCaps(::GetDC(m_hWnd), LOGPIXELSX));
double fX,fY;
HDC hDC=::GetDC(m_hWnd);
//获得象素值
fX=(double)GetDeviceCaps(hDC,HORZRES);//*(double)hmWidth/((double)dc.GetDeviceCaps(HORZSIZE)*100.0);
fY=(double)GetDeviceCaps(hDC,VERTRES);//*(double)hmHeight/((double)dc.GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(hDC,PosX,PosY+lty,ltx,-lty,0,0,hmWidth,hmHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
file.Close();
pPic->Release();
} else
{
AfxMessageBox("Error Loading Picture From Stream!");
}
}
}
}
}
不过借助第三方开发的工具类,可以做到直接传入JPG文件显示!工具类负责显示所必要的转换!