VC2008中使用GDI+ (VC6也差不多)
1. 在需要的地方加入如下语句(例如 stdafx.h):
#include "gdiplus.h"
#pragma comment( lib, "gdiplus.lib")
2. 在使用前增加如下语句(例如在BOOL CXXXApp::InitInstance())
a. CXXXApp的类成员
ULONG_PTR m_gdiplusToken;
b. CXXXApp::InitInstance()函数中加入如下语句:
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
3. 绘制图形, 例如在 CXXXView::OnDraw(CDC* pDC)中:
void CXXXView::OnDraw(CDC* pDC)
{
CXXXDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
using namespace Gdiplus;
Graphics graphics( pDC->m_hDC );
GraphicsPath path; // 构造一个路径
path.AddEllipse(50, 50, 200, 100);
// 使用路径构造一个画刷
PathGradientBrush pthGrBrush(&path);
// 将路径中心颜色设为蓝色
pthGrBrush.SetCenterColor(Color(255, 0, 0, 255));
// 设置路径周围的颜色为蓝芭,但alpha值为0
Color colors[] = {Color(0, 0, 0, 255)};
INT count = 1;
pthGrBrush.SetSurroundColors(colors, &count);
graphics.FillRectangle(&pthGrBrush, 50, 50, 200, 100);
LinearGradientBrush linGrBrush(
Point(300, 50),
Point(500, 150),
Color(255, 255, 0, 0), // 红色
Color(255, 0, 0, 255)); // 蓝色
graphics.FillRectangle(&linGrBrush, 300, 50, 200, 100);
}
// 绘制一条直线的代码
using namespace Gdiplus;
Graphics graphics(pDC->m_hDC);
Color colors(0, 0, 0);
Pen pen(colors, 2);
graphics.DrawLine(&pen, 0, 0, 100, 100);</span>
4. 在用完后调用如下语句, 例如在 int CXXXApp::ExitInstance()中调用
Gdiplus::GdiplusShutdown(m_gdiplusToken);
GDI+ MSDN地址: ms-help://MS.MSDNQTR.v90.en/gdicpp/GDIPlus/GDIPlusreference.htm
一个不错的GDI+学习 Blog: http://www.cnblogs.com/del/category/113557.html