vc显示jpg,gif图像简单方法
VC没有直接显示JPG图片的方法,在网上找了个比较简单的列子自己改了下,还挺好用,下面一个函数就行了
- 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.Read(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;
- }
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.Read(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;
}
使用方法:
在对话框上放一个cstatic控件IDC_STC_DUMMY,调整控件大小使得图片能够完全显示
- CDC* pDC = GetDlgItem(IDC_STC_DUMMY)->GetDC();
- ShowJpgGif(pDC,"aa.jpg",0,0);
vc显示jpg,gif图像简单方法相关推荐
- Win10如何显示文件后缀名?显示后缀名的简单方法
现在大多数用户使用的电脑都是Win10系统,有时我们重装电脑系统,会发现电脑出现一些问题,比如文件后缀名不显示出来.如何显示文件后缀名?方法很简单,跟着下面的详细操作步骤走,轻轻松松Get回消失的文件 ...
- 上传图片并显示缩略图的最简单方法(c#)
private void fileUpload_Click(object sender, System.EventArgs e) { // 模拟数据库里取出by ...
- VC++ 用ADO连接数据库的简单方法
在头文件中要包含 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace renam ...
- VC开发多语言界面支持的简单方法
VC开发多语言界面支持的简单方法 作者:成晓旭 (需要完整源代码请留言) 最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置. 初步设计用INI文件来配置显示内容 ...
- python储存与读取图片_Python下opencv使用笔记(一)(图像简单读取、显示与储存)...
写在之前 从去年開始关注python这个软件,途中间间断断看与学过一些关于python的东西.感觉python确实是一个简单优美.easy上手的脚本编程语言,众多的第三方库使得python异常的强大. ...
- python图显示在新的窗口_python在新的图片窗口显示图片(图像)的方法
python在新的图片窗口显示图片(图像)的方法 使用python画图,发现生成的图片在console里.不仅感觉很别扭,很多功能也没法实现(比如希望在一幅图里画两条曲线). 想像matlab一样单独 ...
- php网页加查询框,Twentytwelve头部添加搜索框及网站名称与描述同行显示的简单方法 | 科研动力...
Twenty Twelve 主题的头部默认没有搜索框,不像它的前辈和后生.这点我就不明白了,Twentyeleven和最新的Twentythirteen都有搜索框,为何Twentytwelve就没有呢 ...
- 简单的java信息显示_JSP实现简单的用户登录并显示出用户信息的方法
本文实例讲述了jsp实现简单的用户登录并显示出用户信息的方法.分享给大家供大家参考.具体实现方法如下: login.jsp string path = request.getcontextpath() ...
- Baumer工业相机堡盟相机如何通过BGAPI SDK联合OpenCVSharp进行图像简单拼接并显示固定数量保存和持续保存(C#)
Baumer工业相机堡盟相机如何通过BGAPI SDK联合OpenCVSharp进行图像简单拼接并显示固定数量保存和持续保存(C#) Baumer工业相机 Baumer工业相机SDK联合OpenCVS ...
最新文章
- aba问题mysql_解决CAS机制中ABA问题的AtomicStampedReference详解
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
- 2018年JavaWeb和移动程序员学习的12个框架
- android日志收集存入mysql_rsyslog+analyzer+mysql实现日志收集展示
- BREW应用的分发流程
- 使用css3实现瀑布流布局效果
- 如何写一篇MBA论文-涉及matlab建模
- margin 负边距应用
- 程序员最爱用 Emacs 写 Python、Bash,调研了 7300 位开发者有这些发现
- DBL_EPSILON和FLT_EPSILON的用法
- python更改数据框指定位置的数据_python – 移动数据框列并更改列顺序
- 2021-06-06 弹窗练习
- IEC63174电动牙刷性能检测仪器分享
- 2020计算机保研心得(上岸中科大)
- Linux接蓝牙音响无声音,win10蓝牙音箱没有声音怎么办_win10蓝牙音响连接成功没声音处理方法...
- oppo手机出现android什么坏了,OPPO手机提示“停止运行”怎么办 oppo停止运行的解决方法...
- Linux上构筑iPhone OS3.1.2开发环境之解压firmware
- 电脑或U盘文件夹变为后缀为.exe文件,解决办法。
- 趋势科技公司的创始人:张明正的创业路
- 自定义控件实现(淘宝头条/京东快报)垂直循环滚动栏目