6、用Visual C++.NET使用GDI+的一般方法
在Visual C++.NET使用GDI+一般遵循下列步骤:
(1) 在应用程序中添加GDI+的包含文件gdiplus.h以及附加的类库gdiplus.lib。通常gdiplus.h包含文件添加在应用程序的stdafx.h文件中,而gdiplus.lib可用两种进行添加:第一种是直接在stdafx.h文件中添加下列语句:
| #pragma comment( lib, "gdiplus.lib" ) |

|
程序代码: ULONG_PTR m_gdiplusToken; |
|
程序代码: int CEx_GDIPlusApp::ExitInstance() { Gdiplus::GdiplusShutdown(m_gdiplusToken); return CWinApp::ExitInstance(); } |
|
程序代码: BOOL CEx_GDIPlusApp::InitInstance() { CWinApp::InitInstance(); Gdiplus::GdiplusStartupInput gdiplusStartupInput; Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL); ... } |
|
程序代码: void CEx_GDIPlusView::OnDraw(CDC* pDC) { CEx_GDIPlusDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); using namespace Gdiplus; Graphics graphics( pDC->m_hDC ); Pen newPen( Color( 255, 0, 0 ), 3 ); HatchBrush newBrush( HatchStyleCross, Color(255, 0, 255, 0), Color(255, 0, 0, 255)); // 创建一个填充画刷,前景色为绿色,背景色为蓝色 graphics.DrawRectangle( &newPen, 50, 50, 100, 60); // 在(50,50)处绘制一个长为100,高为60的矩形 graphics.FillRectangle( &newBrush, 50, 50, 100, 60); // 在(50,50)处填充一个长为100,高为60的矩形区域 } |

|
程序代码: #include <gdiplus.h> #pragma comment( lib, "gdiplus.lib" ) |
(4) 在 CEx_GDIPlusDlgApp类的属性窗口中,单击"重写"工具按钮,为该添加ExitInstance的重载:
(5) 定位到CEx_GDIPlusDlgApp::InitInstance函数处,添加下列GDI+初始化代码:
(6) 定位到CEx_GDIPlusDlgDlg::OnPaint函数处,添加下列GDI+代码:
(7) 编译并运行,结果如图3所示。
图3
从上述例子可以看出,只要能获得一个窗口的设备环境指针,就可构造一个Graphics对象,从而可以在其窗口中进行绘图,我们不必在像以往那样使用Invalidate/UpdateWindow来防止Windows对对话框窗口进行重绘。