网上找了一些资料学习了一下PNG图的显示,这里总结一下。

参考:http://blog.csdn.net/czyt1988/article/details/7965066

一、VS2010配置GDI+

  由于VS2010已经自己干了一些活,所以直接添加下面这些就好了。

  1.在stdafx.h里加入下面3句话

  #pragma comment(lib,"gdiplus.lib")
  #include "gdiplus.h"
  using namespace Gdiplus;

  2.加入一个成员变量

  ULONG_PTR m_gdiplusToken;

  3.加入初始化代码

GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);

由于已经加入了using namespace Gdiplus;这句,前面就不用加Gdiplus::了。

4.加入结束回收代码

GdiplusShutdown(m_gdiplusToken);

这里加入一个窗口销毁事件,如下处理加入代码即可。

void CShowPNGDlg::OnDestroy()
{
CDialogEx::OnDestroy();

// TODO: Add your message handler code here
GdiplusShutdown(m_gdiplusToken);

}

5.加入一个按钮,按下按钮显示图片

void CShowPNGDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
Image image(L"logo.png"); //载入指定路径的图像文件
CWnd* pwnd=GetDlgItem(IDC_STATIC_PIC);
CDC* dc=pwnd->GetDC(); //获取图像控件的设备上下文
CRect rect;
pwnd->GetClientRect(&rect); //获取客户区域的信息
Graphics graph(dc->GetSafeHdc());
graph.DrawImage(&image,0,0,rect.Width(),rect.Height());

//在指定图像控件的区域中绘制图像
// 函数 DrawImage()的第 1 个参数为存放图像数据的内存地址
// 第 2 个参数和第 3 个参数是绘制的起点坐标
// 第 4 个参数和第 5 个参数是指定的宽度和高度
ReleaseDC(dc); //释放资源
}

这里记得添加一个图片显示控件或者一个标签控件,设置其ID为IDC_STATIC_PIC,用于显示图片。

二、大功告成,在试试下面几个修改:

1.直接把按钮响应里的代码放到OnInitDialog()里面,跟着初始化后面写,看看还能不能显示,这里我不解,我想应该是显示机制的问题,再加入刷新代码的话应该就可以了。

2.图片显示的格式,换成其他的,比如jpg等,试试看。

BB了半天,上图。

最后,最关键的,工程在此:http://pan.baidu.com/s/1qWxAl7Q

VS2010 MFC GDI+ 实现PNG透明图片显示的更多相关文章

  1. VS2010/MFC常用控件:图片控件Picture Control

    图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到 ...

  2. C# Winform控件对透明图片重叠时导致图片不透明的解决方法(转)

    在Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果. 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片. 这里我们就以一个pi ...

  3. 【VS开发】GDI+ 用CImage类来显示PNG、JPG等图片

    系统环境:Windows 7 软件环境:Visual Studio 2008 SP1 本次目的:实现VC单文档.对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也 ...

  4. VS2010 / MFC + OpenCV 2.4.1打开图片

    Windows 7 x64,VS2010 / MFC + OpenCV 2.4.1打开图片显示到Picture控件中. OpenCV 2.2.OpenCV 2.3同样适用. 工具/原料 WinXP / ...

  5. VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)

    上一节中鸡啄米讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObje ...

  6. VS2010/MFC编程入门教程之目录和总结

    鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...

  7. VB6 GDI+ 入门教程[6] 图片

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...

  8. 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

    一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImag ...

  9. VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)

    上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...

随机推荐

  1. [Excel] C#GridViewExport帮助类,美化导出 (转载)

    主要功能如下1.将整GridView的数据导出到Excel中关增加一个效果线做美化最新的GridViewExport操作类看下面代码吧 /// <summary> /// 类说明:Grid ...

  2. jmeter中webdriver插件,进行自动化压测

    1.下载JMeterPlugins-WebDriver-1.1.2 2.将JMeterPlugins-WebDriver-1.1.2\lib\ext中的*.jar拷贝到D:\apache-jmeter ...

  3. js基础知识之_入门变量和运算符

    js页面效果学习 (轮播图,文字滚动效果等等) javascript能来做什么 1.数据验证 2.将动态的内容写入网页中(ajax) 3.可以对时间做出响应 4.可以读写html中的内容 5.可以检测 ...

  4. mvc5 + ef6 + autofac搭建项目(三)

    前面已经基本完成了框架的搭建,后面就是实现了,后面主要说下前端的东西bootstrap的使用和相关插件. 看图: 实现比较简单,在主页面只引入共用部分的 js等相关包,毕竟不是所有页面都需要列表以及其 ...

  5. LINUX nohup命令输入输出深浅进出

    无论是否将 nohup命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中.如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中 ...

  6. linux常用命令(自我积累)

    创建目录:mkdir + 目录名 使文件可执行:chmod +x filename 执行文件:./filename 来执行您的脚本 {程序必须以下面的行开始(必须方在文件的第一行): #!/bin/s ...

  7. 数据挖掘学习笔记:挖掘频繁模式、关联和相关[ZZ]

    所 谓挖掘频繁模式,关联和相关,即指在出现的数据集中找到一个经常出现的序列模式或者是一个经常出现的数据结构.就像搞CPU设计的人知道,Cache的预 取机制有流预取和指针预取,前者就是发现流模式,即发 ...

  8. root 密码丢失后的重新设置

    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & mysql> use mysql; mysql> update use ...

  9. win8.1磁盘使用率100解决方法

    关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态.关闭方法:Win+C – 设置 – 更改电脑设置 – 家庭组 – 离开如果用不到家庭组可以直接把家庭组服务也给关闭了:控制面板 – 管理工具 – ...

  10. Go语言探险思考笔记

    最近接触对象存储,国际上鼎鼎有名的Amazon S3还有Google Cloud Service在国内由于防火墙还有机房过远的问题,并不能投入生产使用.国内有名的对象存储,大家众所周知的七牛云,后台就 ...