首页 软件 购物 网址 万年历 阅读 | 天天财汇 | 开发教程 头条阅读
图片批量下载器 M3U8下载器 网页批量下载器 图片自动播放器 淘宝下载 屏幕截图器 网页截图器 超级按键
喔哦浏览器 一键清理系统垃圾 天天百宝箱 布谷鸟定时关机 豆豆文本编辑器 木马查杀 显示器测试 好听音乐
TxT小说阅读器 快马文件互传 小说家小说写作助手 FoxFile文件管理器 千寻小说下载 高山文件备份 网速测试 文字转语音大师
股价下载分析器 离线地图下载器 多播视频 漫多多 品妙游戏 打豆豆 俄罗斯方块 果蔬连连看 宠物连连看 美女连连看 五子棋 订制软件
推荐分类: 软件公告 | 焦点关注 | 天天财汇 |
  当前位置: 首页 > 软件公告 > 技术专区 > 显示JPG和GIF图片的简单方法vc++技术 > 正文显示
  百分百防木马的网页浏览器 网虫浏览器
 翻页: [1]   共2/1页
第1楼: 显示JPG和GIF图片的简单方法vc++技术  
   作者: 匿名   发表时间: 2008/5/3 21:10:21   主页:   IP: 保密
经常在论坛上看到有人问如何显示JPGE和GIF图片,我这里刚好有一段显示JPEG和GIF图片的代码。拷回去吧?说不定下次有的着呢。 CShowJpegView是我的的一个视图类,用的时候一定要将这个将成你自己的类哦!不是视图类也行,只要你能够传个CDC给这个函数就行。/*函数功能:显示JPG和GIF图片参数说明 pDC:设备环境对象 strPath:要显示的图片路径 x:要显示的X位置 y:要显示的Y位置*/ BOOLCShowJpegView::ShowJpgGif(CDC* pDC,CStringstrPath, intx, inty){ IStream *pStm; CFileStatusfstatus; CFilefile; LONGcb; //打开文件并检测文件的有效性 if (file.Open(strPath,CFile::modeRead)&& file.GetStatus(strPath,fstatus)&& ((cb = fstatus.m_size) != -1)) { HGLOBALhGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); LPVOIDpvData = NULL; if (hGlobal != NULL) { pvData = GlobalLock(hGlobal); if (pvData != NULL) { file.ReadHuge(pvData, cb); GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); } } } else { returnfalse; } //打开文件结束 //显示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_HIMETRIChmWidth; OLE_YSIZE_HIMETRIChmHeight; pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight); doublefX,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(); returnfalse; } pPic->Release(); } else { returnfalse; } returntrue;} 下面这三行代码是调用时函数的方法: CStringsPath; 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文件没实现。  
第2楼: re  
   作者: re   发表时间: 2008/5/3 21:10:54   主页:   IP: 保密
显示 JPG 和 GIF 图片的简单方法

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文件没实现。

 

 翻页: [1]   共2/1页



   若有疑问请联系我们

  ※软件公告※
图片批量下载器
获首届软件创新大赛优秀奖
电脑教育报
专访TxT小说阅读器
软件相关
·软件公告
·图片批量下载器
·超级按键
·网虫浏览器
·一键清除系统垃圾
·TxT小说阅读器
·热门小说推荐
·小说下载器
·网页截图器
·木马祼奔
·天天百宝箱
·显示器测试
·图片管理器
·好听音乐盒
·连连看游戏系列
资讯相关
·焦点关注
·在线游戏
·娱乐八卦
·经济论坛
·体育世界
·健康知识
·每日一笑
·技术专区
·特别推荐
·随便贴贴
三石聚峰
Intel软件合作伙伴
·几张很黄很黄的图片
·预测你的未来潜能

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 19:31:55-

 网站联系 2006-2024 三石聚峰 WWW.3FWork.COM 蜀ICP备06016416号