VS2010 MFC GDI+ 实现PNG透明图片显示
网上找了一些资料学习了一下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透明图片显示的更多相关文章
- VS2010/MFC常用控件:图片控件Picture Control
图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到 ...
- C# Winform控件对透明图片重叠时导致图片不透明的解决方法(转)
在Winform中如果将一个透明图片放在窗体上能正常显示透明,但是如果将该图片放在另一个控件上会导致不能显示透明效果. 解决这种情况,可以采取在控件上使用GDI+绘画出透明图片. 这里我们就以一个pi ...
- 【VS开发】GDI+ 用CImage类来显示PNG、JPG等图片
系统环境:Windows 7 软件环境:Visual Studio 2008 SP1 本次目的:实现VC单文档.对话框程序显示图片效果 CImage 是VC.NET中定义的一种MFC/ATL共享类,也 ...
- VS2010 / MFC + OpenCV 2.4.1打开图片
Windows 7 x64,VS2010 / MFC + OpenCV 2.4.1打开图片显示到Picture控件中. OpenCV 2.2.OpenCV 2.3同样适用. 工具/原料 WinXP / ...
- VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
上一节中鸡啄米讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGdiObject类是GDI对象的基类,通过查阅MSDN我们可以看到,CGdiObje ...
- VS2010/MFC编程入门教程之目录和总结
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...
- VB6 GDI+ 入门教程[6] 图片
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[6] 图片 2009 年 6 月 19 日 15条评论 ...
- 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)
一.图片显示 图片显示的方法: 1. 直接写程序 2. 第3方库 3. 调用COM组件的IPicture接口 4. 使用MFC的CPictureHolder类 5. 使用GDI+的CImag ...
- VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)
上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...
随机推荐
- 对于EditText的详细用法
EditText这个控件对于每一个Android开发者来说都是再熟悉不过了,但是,为什么有的人的EditText可以表现的那么好看,而刚入学Android的程序员来讲却丑到爆.这就充分的说明对于Edi ...
- oracle学习笔记2:创建修改表
1.创建表 CREATE TABLE ORDERINFO ( ORDERID NUMBER(*, 0) NOT NULL , ORDERCODE VARCHAR2(20 BYTE) NOT NULL ...
- 编写适合windows 7 平台的软件,给程序添加UAC认证
Delphi程序必须在资源里面嵌入MANIFEST信息 一. 首先编辑一个文件,内容如下: <?xml version="1.0" encoding="UTF-8& ...
- php 连接mysql数据库并显示数据 实例 转载
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 要想重启后也生效LINUX防火墙配置
新配置的一台服务器,安装的是CentOS6.3系统,在安装完LNMP之后,发现nginx进程存在,且php解析正常,但是用分配的独立IP去访问的时候发现无法访问. 查了下网上的资料,发现可能是Linu ...
- 判断IE浏览器用IE条件表达式
<!--[if IE]> <script type="text/javascript"> alert("ie") </script ...
- TensorFlow和最近发布的slim
笔者将和大家分享一个结合了TensorFlow和最近发布的slim库的小应用,来实现图像分类.图像标注以及图像分割的任务,围绕着slim展开,包括其理论知识和应用场景. 之前自己尝试过许多其它的库,比 ...
- 桂电在线-转变成bootstrap版
由于angularjs的不熟悉,而且SEO需要学习更多东西,于是先采用bootstrap版本,毕竟工作上也需要使用bootstrap,然后参照视频教程学习. bootstrap 基本模板 <!D ...
- 聊一聊c++中指针为空的三种写法 ----->NULL, 0, nullptr
看到同事用了一下nullptr.不是很了解这方面东东,找个帖子学习学习 http://www.cppblog.com/airtrack/archive/2012/09/16/190828.aspx N ...
- WebApi(四)-Post接口请求失败或接受不到参数(解决方法)
post方式只能接受一个参数而且必须用FromBody特性标识,所以当没有使用FromBody特性标识的时候就会请求失败,如有添加添加了那访问接口时候参数应传对象不能是key:val的格式否则会接收到 ...