工大在线

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 924|回复: 0
打印 上一主题 下一主题

显示JPG和GIF图片的简单方法

 关闭 [复制链接]

678

主题

7

好友

3856

积分

荣誉会员

嘿嘿帮主

Rank: 8Rank: 8

该用户从未签到

西工币
3515 枚
好评度
94 点
声望
1788 点
注册时间
2006-8-3
帖子
2835
积分
3856
UID
1713

终身成就奖 论坛元老 特殊贡献奖 优秀斑竹奖 帖子大王 天秤座 寅虎

跳转到指定楼层
1#
发表于 2007-3-13 09:48:23 |只看该作者 |倒序浏览
  显示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文件没实现。
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 顶!~顶!~0 扔鸡蛋~扔鸡蛋~0
您需要登录后才可以回帖 登录 | 注册

手机版|xatubbs.com ( 苏ICP备11050183号 )

GMT+8, 2025-7-5 12:41 , Processed in 0.107965 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部