第一次使用gdi+,在vc 2005下,不知道怎么用,请大家积极帮助,O(∩_∩)O谢谢.
解决方案 »
- 为何再用了fflush之后,文件当前位置改变了?
- 为什么说动态联编在编译时无法确定调用哪个函数,只有在程序运行时才能确定
- 我在vc编译一例程,出现找不到_assert
- 一个关于串口保存数据非常占用资源的问题?
- 如何在对话框中使用F1--F10的键值
- 编辑框控件中不能回车,回车就退出程序,刚刚发现的问题,急!急!急!
- 在动态库中什么东西能替代GetSafeHwnd返回的窗口句柄?谢谢
- 为啥我在InstallShield中调用DLL中的函数总是出错呢?
- 如何用VC实现一个模块然后在VB中使用?
- vs2010工程为什么不能调用vs2012生成的库
- windows7 关于下载问题
- mac地址判断唯一机子的疑惑
http://www.vckbase.com/document/viewdoc/?id=1440
(1)、在项目中引入GDI+的头文件,使用GDI+的命名空间。
(2)、初始化GDI+系统资源。
(3)、使用完毕之后,释放GDI+所使用的资源。
(4)、在编译时加入GDIplus.Lib库文件。
实例步骤:
(1)、在Visual C++.NET的IDE中,选择“文件”|“新建”|“项目”命令,选择MFC应用程序,在“名称”文本框肿输入项目名称GDIPlusDemo。在随即出现的“MFC应用程序向导”对话框肿,选择程序的类型为“单文档”。
(2)、在程序中使用GDI+命名空间
GDI+中使用了自己的命名空间,可以从GDIplus.h头文件中看出GDI+对命名空间的定义,并添加GDI+运行库(GDIplus.LIB)支持。具体方法是修改stdafx.h文件,在该头文件的结尾处加入下列的代码:
//引入GDI+头文件
#include <GdiPlus.h>
//使用GDI+的命名空间
using namespace Gdiplus;
#pragma comment( lib, "gdiplus.lib" )
(3)、GDI+资源的初始化与销毁
在使用GDI+的资源之前,应该通过GdiplusStartup(启用GDI-资源)函数进行GDI+系统资源的初始化操作,而在程序结束前,应该通过GdiplusShutdown(关闭GDI+资源)函数进行GDI+资源的销毁操作。这亮相工作,可以在CGDIPlusDemoApp类的InitInstance(初始化进程)函数喝CGDIPlusDemoApp类的析构函数中进行。
//全局变量,表明对GDI+的一个引用
ULONG_PTR gdiplusToken;
//CGDIPlusDemoApp初始化
BOOL CGDIPlusDemoApp::InitInstance()
{
InitCommonControls();
//GDI+系统资源的初始化
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);
CWinApp::InitInstance(); // 初始化OLE 库
if (!AfxOleInit())
{
……
}
}
int CGDIPlusDemoApp::ExitInstance()
{
// TODO: 在此添加专用代码和/或调用基类
GdiplusShutdown(gdiplusToken);
return CWinApp::ExitInstance();
}
其中,全局变量gdiplusToken的作用就是代表着对GDI+的一个引用。在使用GdiplusStartup函数时,该变量已经被初始化,在使用GdiplusShutdown函数时,通过对变量gdiplusToken的访问从而完成对GDI+资源的销毁工作。
经过上述三个步骤后,一个完整的GDI+程序的框架已经搭建完毕,只需在CGDIPlusDemoView::OnDraw(CDC* pDC)函数中添加相应的代码就可以了。