17.6.5 测试GDI+搭建的环境(1)
(1)在应用程序项目的应用类中,添加一个成员变量,如下列代码:
- ULONG_PTR m_gdiplusToken;
其中,ULONG_PTR是一个DWORD数据类型,该成员变量用来保存GDI+被初始化后在应用程序中的GDI+标识,以便能在应用程序退出后,引用该标识来调用Gdiplus:: GdiplusShutdown来关闭GDI+。
(2)在应用类中添加ExitInstance的重载,并添加下列代码用来关闭GDI+。
- 01 int CGDITestApp::ExitInstance()
- 02 {
- 03 Gdiplus::GdiplusShutdown(m_gdiplusToken); //GDI+标识
- 04 return CWinApp::ExitInstance();
- 05 }
(3)在应用类的InitInstance()函数中添加GDI+的初始化代码:
- CWinApp::InitInstance();
- Gdiplus::GdiplusStartupInput gdiplusStartupInput;
- Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
注意:这些GDI+的初始化代码必须放在m_pMainWnd->UpdateWindow();之前。
(4)在需要绘图的窗口或视图类中添加GDI+的绘制代码。
下面分别就单文档和基于对话框应用程序为例,说明使用GDI+的一般过程和方法。
1.在单文档应用程序中使用GDI+
- 01 void CSignelDocView::OnDraw(CDC* pDC)
- 02 {
- 03 CSignelDocDoc* pDoc = GetDocument();
- 04 ASSERT_VALID(pDoc);
- 05 using namespace Gdiplus;
- 06 Graphics graphics(pDC->m_hDC);
- 07 Pen newPen(Color(0,255,0),3);
- 08 //创建一个填充画刷,前景色为红色,背景色为蓝色
- 09 HatchBrush newBrush(HatchStyleCross,Color(255,255,0,0),Color
- (255,0,0,255));
- 10 //在(10,10)处绘制一个长为200,高为100的矩形
- 11 graphics.DrawRectangle(&newPen,10,10,200,100);
- 12 //在(10,10)处填充一个长为200,高为100的矩形区域
- 13 graphics.FillRectangle(&newBrush,10,10,200,100);
- 14 }
编译并运行,结果如图17.19所示。
|
| 图17.19 单文档GDI+运行结果 |