GDI+是一套的跟GDI一套类似里面也有Pen,Brush,Color等绘图结构Gdi+里面的参数虽然跟GDI一样但是是不同的类Gdi+完全抛弃了GDI
里面的类型你要用GDI+必须有3个条件
1一套类库不只是gdiplus.h一共有32个头文件
放到vc6\vc98\mfc\src\include下
2 gdiplus.lib你已经有了放到library下
3 *** 作系统是XP以上或则你的系统目录下有gdiplus.dll
基本条件有了就可以编程了
在stdAfx.h下
#define ULONG_PTR unsigned long*
#include "GDI\GdiPlus.h"
using namespace Gdiplus
#endif
#pragma comment(lib,"gdiplus.lib")
ULONG_PTR是GDI初始化函数需要的类型
在使用前必须初始化网络编程一样。
建议放到InitiInstance下
GdiplusStartu(ULONG_PTR* , GdiplusStartupInput* ,
第3个参数设置NULL)
注意第一个参数设置为公共成员变量在退出函数里要释放需要这个参数。
在OnDestroy里面加入释放参数
GdiplusShutdown(ULONG_PTR)参数就是上面第一变量
Graphics 对象==CDC
一个实例比如
Graphics graphics(m_hWnd)
Image image("PatchName.png")
graphics.DrawImage(&image,0,0,image.GetWidth(),image.GetHeight())
1、可以在内存中建立一张缓存图片,然后在这个图片上画你需要的图,然后输出到窗体,这样你可以直接保存成图片了。2、画在bitmap上
bitmap有save方法
创建graphics的时候用:Graphics.FromImage().
using namespace Gdiplus2 初始化GDI+资源和销毁GDI+资源在项目APP文件中//声明GDI+全局变量ULONG_PTR gdiplusTokenBOOL CMFCAndGDIApp::InitInstance(){// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControls()。否则,将无法创建窗口。
InitCommonControls()
//GDI+资源初始化
GdiplusStartupInput gdiplusStartupInput
GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL) CWinApp::InitInstance() // 初始化 OLE 库
if (!AfxOleInit()){AfxMessageBox(IDP_OLE_INIT_FAILED)
return FALSE
}//其他系统自动生成的代码}//添加一个析构函数用来释放GDI+资源CMFCAndGDIApp::~CMFCAndGDIApp(){GdiplusShutdown(gdiplusToken)
}3编译时加入GDIplus.lib文件在IDE中选择“项目|添加现有项目”,把GDIplus.lib文件添加进来,该文件一般在C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib目录下4好了,现在可以在MFC中使用GDI+了void CMFCAndGDIView::OnDraw(CDC* /*pDC*/){CMFCAndGDIDoc* pDoc = GetDocument()
ASSERT_VALID(pDoc)if (!pDoc)return //using GDI+
Graphics myg(this->GetDC()->m_hDC)
Pen pen(Color(255,0,255))
SolidBrush brush(Color(255,0,255))
CRect rect
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)