MFC 使用GDI+ 绘制Png、Jpg等类型图片
来源:互联网 发布:java简单超市管理系统 编辑:程序博客网 时间:2024/04/30 08:01
MFC是微软对Win32 API的封装,使用较为简单,但是在美化方面MFC本身就比较欠缺了,单单只是简单的设置一下背景图片这个操作就得需要好多行代码,并且还不能直接使用Png、Jpg等图片,今天小悠就在这里简单的说一下MFC成显示png和jpg等图片的方法.
先看一下绘制的效果吧:
首先说一下程序中需要引入的头文件以及lib库
要想显示Png、Jpg等格式的图片,需要引入微软的GDI+图形设备接口,在你的MFC程序中 导入头文件GdiPlus.h和库文件 gdiplus.lib就能使用GDI+了,小悠一般是这么做的:
//包含文件
#include <GdiPlus.h>
//GDI的库
#pragma comment(lib, "gdiplus.lib")
其次,在使用GDI+的时候需要初始化GDI+
初始化操作使用函数 GdiplusStartup(
ULONG_PTR* token,
const GdiplusStartupInput* input,
GdiplusStartupOutput* output
);
来完成,其中
参数一:他是一个ULONG_PTR的指针,token这个参数就类
似于一个句柄吧,关闭GDI+的时候需要用到它。
参数二:指针指向一个GdiplusStartupInput结构,其中包
含了GDI+的一些信息。
参数三:指针到一个GdiplusStartupOutput结构,它接收
一些GDI+信息
上面只是简单介绍了这个函数的参数,详细的信息你可以查看MSDN
例如小悠是这个样子初始化GDI+的:
//就一句话,里面的 两个变量
//ULONG_PTR m_Taken;
// Gdiplus::GdiplusStartupInput m_Input;
Gdiplus::GdiplusStartup(&m_Taken, &m_Input, NULL);
为了简单的说明,我们就直接在Onpaint里面完成绘制的全部操作
因为要绘制一张图片,首先我们需要将图片载入内存,然后你还需要知道你需要绘制的目标区域,最后告诉GDI+你的图片的剪切区域,完成绘制就OK了,下面是小悠简单的写的一个操作,在OnPaint里面完成的:
CDialogEx::OnPaint();
//这里简单的绘制一下背景,就省略了一些 复杂的 操作
//获取到DC
CDC* pDC = GetDC();
//你需要绘制的目标
CRect clientRect;
GetClientRect(&clientRect);
//载入你的图片
Gdiplus::Bitmap * lpBmp =Gdiplus::Bitmap::FromFile(_T(
"./bg.jpg"
));;
//绑定你 的DC
Gdiplus::Graphics graph(pDC->m_hDC);
//开始绘制操作
graph.DrawImage(lpBmp,
//目标位置
Gdiplus::Rect(0,0,clientRect.Width(),clientRect.Height()),
//图片的剪切
0,0,lpBmp->GetWidth(),lpBmp->GetHeight(),
Gdiplus::UnitPixel
);
graph.ReleaseHDC(pDC->m_hDC);
delete
lpBmp;
最后在对话框的析构函数中要释放GDI+的资源
释放一句话搞定:
if
(m_Taken)
{Gdiplus::GdiplusShutdown(m_Taken);}
总结:
总的来说使用GDI+分为下面的几个简单步骤
①包含对应的头文件,引入GDI+的lib库
②初始化GDI+
③绑定DC完成绘制
④释放GDI+
- MFC 使用GDI+ 绘制Png、Jpg等类型图片
- VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式
- VB6.0用GDI+保存图片为JPG、TIFF、PNG、GIF、BMP等格式
- 【VS开发】GDI+ 用CImage类来显示PNG、JPG等图片
- GDI+ 读取(jpg,PNG,BMP)等格式)图片每个像素的值
- MFC使用GdipButton(gdi+)之加载PNG图片DPI问题
- vc加载PNG以及JPG等图片资源并绘制图片
- vc6.0使用gdi+在内存中绘图并将其保存为bmp,jpg,gif,png等格式的图片
- vc6.0使用gdi+在内存中绘图并将其保存为bmp,jpg,gif,png等格式的图片
- MFC 绘制 PNG 格式图片
- MFC 加载jpg等图片
- ffmpeg解码JPG和PNG等图片
- ffmpeg解码JPG和PNG等图片
- 使用GDI+显示PNG图片
- 使用GDI+ 绘制可旋转的PNG
- MFC如何使用GDI+,button加载png
- MFC如何使用GDI+,button加载png
- 使用GDI+加载PNG(MFC)
- active mq jndi实战
- Quick 触摸机制+config详解
- linux crontab 命令详解
- [ACM] POJ 3740 Easy Finding (DFS)
- 数据结构课程设计——通讯录制作
- MFC 使用GDI+ 绘制Png、Jpg等类型图片
- Android中的事件机制
- 智能手机音频系统
- Singleton模式——对象创建型模式
- htmlparser 基础 网页拔取
- 关于iOS app之间相互调用
- 关于 Web Service 学习
- 基于视频的车辆识别技术
- 打log