显示JPG和GIF图片的简单方法
2007-02-07 21:47
501 查看
显示JPG和GIF图片的简单方法 http://dev.21tx.com/2002/11/27/10074.html king fan
2002/11/27
经常在论坛上看到有人问如何显示JPGE和GIF图片,我这里刚好有一段显示JPEG和GIF图片的代码。拷回去吧?说不定下次有的着呢。
CShowJpegView是我的的一个视图类,用的时候一定要将这个将成你自己的类哦!不是视图类也行,只要你能够传个CDC给这个函数就行。
/*
函数功能:显示JPG和GIF图片
参数说明 pDC:设备环境对象 strPath:要显示的图片路径
x:要显示的X位置 y:要显示的Y位置
*/
BOOL CShowJpegView::ShowJpgGif(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;
} //打开文件结束
//显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,
//要显示动画GIF请使用ACTIVE控//件。
IPicture *pPic;
//load image from file stream
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);
double fX,fY;
//get image height and width
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/
((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/
((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
//use render function display image
if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,
hmHeight,hmWidth,-hmHeight,NULL)))
{
pPic->Release();
return false;
}
pPic->Release();
}
else
{
return false;
}
return true;
}
下面这三行代码是调用时函数的方法:
CString sPath;
sPath=_T("C://Windows//SYSTEM//OOBE//IMAGES//BGMC.JPG");
ShowJpgGif(pDC,sPath,100,100);
如果你显示的是在一个控件在,请用如下方式获得CDC
//将pStatic指向要显示的地方
CDC* pDC = GetDlgItem(IDC_CONTROL)->GetDC();
以上是显示JPG和GIF图片的一个简单的方法,简单的同时也存在着不足。放大缩小功能和显示动画GIF文件没实现。
2002/11/27
经常在论坛上看到有人问如何显示JPGE和GIF图片,我这里刚好有一段显示JPEG和GIF图片的代码。拷回去吧?说不定下次有的着呢。
CShowJpegView是我的的一个视图类,用的时候一定要将这个将成你自己的类哦!不是视图类也行,只要你能够传个CDC给这个函数就行。
/*
函数功能:显示JPG和GIF图片
参数说明 pDC:设备环境对象 strPath:要显示的图片路径
x:要显示的X位置 y:要显示的Y位置
*/
BOOL CShowJpegView::ShowJpgGif(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;
} //打开文件结束
//显示JPEG和GIF格式的图片,GIF只能显示一帧,还不能显示动画,
//要显示动画GIF请使用ACTIVE控//件。
IPicture *pPic;
//load image from file stream
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);
double fX,fY;
//get image height and width
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/
((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/
((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
//use render function display image
if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,
hmHeight,hmWidth,-hmHeight,NULL)))
{
pPic->Release();
return false;
}
pPic->Release();
}
else
{
return false;
}
return true;
}
下面这三行代码是调用时函数的方法:
CString sPath;
sPath=_T("C://Windows//SYSTEM//OOBE//IMAGES//BGMC.JPG");
ShowJpgGif(pDC,sPath,100,100);
如果你显示的是在一个控件在,请用如下方式获得CDC
//将pStatic指向要显示的地方
CDC* pDC = GetDlgItem(IDC_CONTROL)->GetDC();
以上是显示JPG和GIF图片的一个简单的方法,简单的同时也存在着不足。放大缩小功能和显示动画GIF文件没实现。
相关文章推荐
- 显示JPG和GIF图片的简单方法
- 显示JPG和GIF图片的简单方法(摘录)
- 显示JPG和GIF图片的简单方法
- vc显示jpg,gif图像简单方法
- vc显示jpg,gif图像简单方法
- VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
- delphi显示 jpg、png、gif 图片及 gif 动画的方法
- IOS显示gif图片,超简单方法
- VC 下加载 JPGJPEGGIFPNG 图片最简单的方法
- VC下加载JPG,JPEG,GIF,PNG图片最简单的方法
- VC 下加载 JPG / JPEG / GIF / PNG 图片最简单的方法
- vc显示jpg,gif图像简单方法
- vc显示jpg,gif图像简单方法
- win mobile 5显示jpg,png,gif图片的方法--5mbox的图片库封装
- VC中打开一幅jpg图片并且显示在对话框上的方法和代码
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- c# winform 显示动态gif图片的方法
- 上传图片并显示缩略图的最简单方法(c#)
- iOS开发中实现显示gif图片的方法