GDI+ 使用指南(basic guiding of GDI plus )
2015-11-10 13:00
423 查看
其实这个也没有什么用,毕竟已经是过时的技术了。不过技术的更新跟实际的使用还是有差距了,免不了还是要用这种过时的技术,所以还是记录下来,方便以后查阅。
GDI+没记错的话是跟随XP诞生的,是XP系统上的图形绘制系统(以前的是GDI),GDI+相对于GDI提供了一些新的特性,比如渐变的画刷,支持多种图像格式等等。不过我觉得最大的变化,还是编程模型上的变化。GDI+使用了面向对象的思想,对接口进行了类封装,使用更加方便。
在应用程序中使用GDI+库应该遵循一下步骤:
1.包含Gdiplus.h头文件,如果图方便,加上:using namespace Gdiplus;这样使用GDI+中的任何东西就不需要重新指定命名空间了。
2.链接DLL的导入库Gdiplus.lib。在VS中有两种方法,一是直接在项目属性->链接->输入中填入Gdiplus.lib;二是直接使用编译器原语:#pragma comment(lib, "Gdiplus.lib")
3.在调用任何GDI+函数前一定要调用GDI+库初始化函数GdiplusStartup(),初始化GDI+库。
4.在确定不需要使用任何GDI+函数并且所有GDI+对象均已销毁(变量超过了生存期),需要调用GDI+关闭函数GdiplusShutdown()。GDI+支持多线程,所以可以在任意一个线程中调用。
下面讲下在实际MFC 单/多文档程序中,如何使用GDI+图形系统(程序名叫:GdiplusTest)。
1.在Stdafx.h头文件中添加如下代码
2.在CGdiplusTestApp类中,添加两个变量,用于GDI+初始化函数。
3.在CGdiplusTestApp::InitInstance()函数中添加如下代码,一定要在pMainFrame->ShowWindow(m_nCmdShow)之前,建议添加在CWinAppEx::InitInstance()之后。
4.重载CGdiplusTestApp的ExitInstance()函数,然后添加GDI+关闭函数。
5.在CGdiplusTestView::OnDraw(CDC* pDC)函数中使用GDI+类,显示图片lena.jpg
程序运行结果图:
![](http://pic002.cnblogs.com/images/2011/351508/2011111712061439.png)
关于GDI+的详细使用请参考MSDN:http://msdn.microsoft.com/en-us/library/ms533798(v=VS.85).aspx
关于GDI+的FAQ请参考:http://www.bobpowell.net/faqmain.aspx
GDI+没记错的话是跟随XP诞生的,是XP系统上的图形绘制系统(以前的是GDI),GDI+相对于GDI提供了一些新的特性,比如渐变的画刷,支持多种图像格式等等。不过我觉得最大的变化,还是编程模型上的变化。GDI+使用了面向对象的思想,对接口进行了类封装,使用更加方便。
在应用程序中使用GDI+库应该遵循一下步骤:
1.包含Gdiplus.h头文件,如果图方便,加上:using namespace Gdiplus;这样使用GDI+中的任何东西就不需要重新指定命名空间了。
2.链接DLL的导入库Gdiplus.lib。在VS中有两种方法,一是直接在项目属性->链接->输入中填入Gdiplus.lib;二是直接使用编译器原语:#pragma comment(lib, "Gdiplus.lib")
3.在调用任何GDI+函数前一定要调用GDI+库初始化函数GdiplusStartup(),初始化GDI+库。
4.在确定不需要使用任何GDI+函数并且所有GDI+对象均已销毁(变量超过了生存期),需要调用GDI+关闭函数GdiplusShutdown()。GDI+支持多线程,所以可以在任意一个线程中调用。
下面讲下在实际MFC 单/多文档程序中,如何使用GDI+图形系统(程序名叫:GdiplusTest)。
1.在Stdafx.h头文件中添加如下代码
#include <GdiPlus.h> #pragma comment(lib, "Gdiplus.lib")
2.在CGdiplusTestApp类中,添加两个变量,用于GDI+初始化函数。
private: Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken;
3.在CGdiplusTestApp::InitInstance()函数中添加如下代码,一定要在pMainFrame->ShowWindow(m_nCmdShow)之前,建议添加在CWinAppEx::InitInstance()之后。
// Initialize GDI+. Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
4.重载CGdiplusTestApp的ExitInstance()函数,然后添加GDI+关闭函数。
Gdiplus::GdiplusShutdown(gdiplusToken);
5.在CGdiplusTestView::OnDraw(CDC* pDC)函数中使用GDI+类,显示图片lena.jpg
Gdiplus::Graphics graphics(pDC->GetSafeHdc()); Gdiplus::Image image(L"lena.jpg"); graphics.DrawImage(&image, 10, 10);
程序运行结果图:
![](http://pic002.cnblogs.com/images/2011/351508/2011111712061439.png)
关于GDI+的详细使用请参考MSDN:http://msdn.microsoft.com/en-us/library/ms533798(v=VS.85).aspx
关于GDI+的FAQ请参考:http://www.bobpowell.net/faqmain.aspx
相关文章推荐
- [leetcode-303]Range Sum Query - Immutable
- UISegmentedControl分段视图
- UITableView 相关属性及方法介绍
- UIScrollView滚动视图属性及方法介绍
- ULK --- Chap3 Processes: Handling Wait Queues
- getRequestDispatcher()与sendRedirect()的区别
- 缓解 SQL Server has encountered 727 occurrence(s) of I/O requests taking longer than 15 seconds
- A beginner’s guide to collecting Twitter data (and a bit of web scraping)
- OC结构体、NSNumber、NSValue、NSDate
- [LeetCode] Range Sum Query - Immutable 区域和检索 - 不可变
- iOS-----UIScrollView
- quick-3.6源码修改纪录
- Builder模式在Android自定义底部对话框的实现
- 使用非 GUI 模式运行 JMeter 压力测试
- 关于elementary OS 64bit UEFI启动修复
- UITabBarController用法
- String,StringBuilder的区别
- easyui validatebox 验证类型
- IOS中UITableViewCell使用详解
- UISwipeGestureRecognizer 侧滑手势