在没有接触Gdiplus之前,在vc中绘制图片,通常加载一张位图,然后进行贴图。对于现在多种多样的图片格式,之前的GDI并不支持(应该是这样的,呵呵)。而使用Gdiplus则可以选择多种图片格式,比如BMP, ICON, GIF, JPEG, Exif, PNG, TIFF, WMF, and EMF。

下面就介绍下首次接触Gdiplus的一个简单应用。

一、包括相应的头文件及引入相应的lib

#include <GdiPlus.h>
//#include <AtlImage.h> //此头文件里面包括#pragma comment(lib, "gdiplus.lib")
#pragma comment(lib, "gdiplus.lib")
using namespace Gdiplus;

二、初始化Gdiplus

Gdiplus::GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_gdiplusToken;
GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );

三、加载相应的资源(此处为图片)

Image*       m_pImage;                           //图片对象
m_pImage=Image::FromFile(_T("Test03.jpg"));//错误判断
if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok))
{if ( m_pImage ){delete m_pImage;m_pImage = NULL;}return FALSE;
}

四、绘制图片

Graphics graphics( GetDC()->GetSafeHdc() );
graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth()); 

五、关闭Gdiplus

GdiplusShutdown( m_gdiplusToken );

以下是显示一个jpg格式的例子(基于对话框的一个程序)
一、主要代码

//变量声明
Gdiplus::GdiplusStartupInput    m_gdiplusStartupInput;
ULONG_PTR                       m_gdiplusToken;
Image*                          m_pImage;                           //图片对象//初始化
BOOL Cmfc12_30Dlg::OnInitDialog()
{// TODO: 在此添加额外的初始化代码//初始化GDI+.GdiplusStartup( &m_gdiplusToken, &m_gdiplusStartupInput, NULL );//加载文件//CT2CW strFileName( _T("I:\\编程练习\\CommonFiles\\Test02.png") );//m_pImage = new Image( _T("I:\\编程练习\\CommonFiles\\Test02.png") );//m_pImage=Image::FromFile(_T("I:\\编程练习\\CommonFiles\\Test02.png"));m_pImage=Image::FromFile(_T("I:\\编程练习\\CommonFiles\\Test03.jpg"));//错误判断if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok)) {if ( m_pImage ){delete m_pImage;m_pImage = NULL;}return FALSE;}MoveWindow( 0, 0, 1024, 768 );//设置按钮位置CWnd* pBtn = GetDlgItem( IDOK );if ( pBtn ){pBtn->MoveWindow( 1024-160, 700, 60, 30 );}pBtn = GetDlgItem( IDCANCEL );if( pBtn ){pBtn->MoveWindow( 1024-80, 700, 60, 30 );}CenterWindow();return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
} //绘制
void Cmfc12_30Dlg::OnPaint()
{//GetDC()->PatBlt( 0, 0, 500, 500, BLACKNESS );//PatBlt( GetDC()->GetSafeHdc(), 0, 0, 500, 500, BLACKNESS );Graphics graphics( GetDC()->GetSafeHdc() ); graphics.DrawImage(m_pImage, 0,0,m_pImage->GetWidth(),m_pImage->GetWidth());
}//关闭
void Cmfc12_30Dlg::OnDestroy()
{CDialog::OnDestroy();// TODO: 在此处添加消息处理程序代码if( m_pImage ){try{delete m_pImage;}catch (...){}m_pImage = NULL;}GdiplusShutdown( m_gdiplusToken );
}  

二、运行界面

GDIplus的初次接触--加载并显示常用格式图片相关推荐

  1. vue图片img加载失败显示自定义默认图片(缺省图)

    vue图片img加载失败显示自定义默认图片(缺省图) 1.图片加载示例  2.加载失败显示默认图片  3.加载失败默认图片代码处理 <div class="book-img" ...

  2. android能用svg格式,Android加载html中svg格式图片进行显示

    最近做的一个项目是把assets目录中的html显示出来,但是因为html里面有一些工程图片,虽然我用ViewPager和PhotoView,进行显示放大了,但是因为工程图片的线条较多还是比较模糊.所 ...

  3. 前端判断img图片未能正确加载时显示一个默认图片。img标签onerror事件设置了本地默认图片还是不显示的问题

    前端img标签中引用后端交给的图片地址时,有可能这个路径下图片被删除或者损坏了,那么页面在加载img图片时就显示为,太丑了. img标签有个onerror事件,就是当图片未被正确加载的时候调用此事件, ...

  4. MFC 加载并显示图片

    方法一  用API OleLoadPicture来加载JPG.GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明)OleLoadPicture 函数实际上创建了一个IPic ...

  5. OpenCV 图像加载和显示

    OpenCV 图像加载和显示 OpenCV 图像加载和显示 加载图像(使用cv :: imread) 创建一个名为OpenCV的窗口(使用cv :: namedWindow) 在OpenCV窗口中显示 ...

  6. Vue+Leaflet实现加载Stamen显示地图

    场景 Vue+Leaflet实现加载OSM显示地图: Vue+Leaflet实现加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面加载显示OSM的基础上,怎样显示s ...

  7. Vue+Leaflet实现加载OSM显示地图

    场景 Leaflet快速入门与加载OSM显示地图: Leaflet快速入门与加载OSM显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 如果是在Vue中怎样实现. 注: 博客: B ...

  8. html加载完显示图片,js图片未加载完显示loading效果

    js图片未加载完显示loading效果 img{float:left;200px;height:200px;margin:0 10px 10px 0} //判断浏览器 var Browser=new ...

  9. QT实现加载并显示多个JSON模型。

    QT实现加载并显示多个JSON模型 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 加载并显示几个JSON模型. JSON模型示例演示了如何加载和显示多个JSON模型 ...

最新文章

  1. windows下定时利用bat脚本实现ftp上传和下载
  2. Oracle 11g Release 1 (11.1) 游标——显式游标
  3. linux Vi搜索和替换字符串
  4. php定义一个名为Vehicles,[PHP][Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]...
  5. CF 295A - Greg and Array 差分數列
  6. C4C的Rich text editor的JavaScript实现
  7. 栈和队列之仅用递归函数和栈操作逆序一个栈
  8. Hadoop namenode启动瓶颈分析
  9. OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
  10. 【渝粤教育】国家开放大学2018年春季 8618-22T燃气行业规范 参考试题
  11. python数据处理:数据合并和Reshaping
  12. Qcom 平台 camera 之 RAW+YUV图抓取
  13. 爬取豆瓣评论之——后来的我们
  14. 实验一:线性表的基本操作实现及其应用
  15. 哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
  16. 黑龙江省大庆市谷歌高清卫星地图下载
  17. 微信小程序开发:Java后台MySQL数据库微信小程序页面
  18. 从视频中截取图像opencv python
  19. MTK获取iso的几种方式
  20. 《计算机网络》第二章作业

热门文章

  1. webpack的loader与plugin原理
  2. JavaScript--键盘控制div移动
  3. 学生选课系统业务需求
  4. “搜索大战”正式打响,微软发布ChatGPT版搜索引擎和浏览器
  5. 2念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si
  6. ps知识点2-吸管、修复、画笔、仿章
  7. 混合硬盘计算机,什么是混合硬盘 什么是hhd硬盘?
  8. COCOS CREATOR(TS)相对坐标转世界坐标
  9. title显示不全的处理方法
  10. python中对象的赋值、浅拷贝和深拷贝