Win32中GDI+应用(五)--GDI与GDI+编程模型的区别

在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务。同时,device context handle是同一定的绘图属性绑定在一起的,诸如画笔、话刷等等,你必须在画线之前创建自己的画笔,然后使用selectObject方法把这个画笔同已经获取的device context handle绑定,才能使用LineTo等方法开始画线。不然,你画出来的线使用的是默认的属性:宽度(1),颜色(黑色)。
但是,在GDI+里面,画线方法DrawLine把画笔Pen直接作为一个参数,这样,一定的画笔就不需要同device context handle 直接绑定了。
下面是GDI和GDI+两者画线代码的演示:

GDI:

HDC          hdc;

PAINTSTRUCT  ps;

HPEN         hPen;

HPEN         hPenOld;

hdc = BeginPaint(hWnd, &ps);

hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));

hPenOld = (HPEN)SelectObject(hdc, hPen);

MoveToEx(hdc, 20, 10, NULL);

LineTo(hdc, 200, 100);

SelectObject(hdc, hPenOld);

DeleteObject(hPen);

EndPaint(hWnd, &ps);

GDI+:

HDC          hdc;

PAINTSTRUCT  ps;

Pen*         myPen;

Graphics*    myGraphics;

hdc = BeginPaint(hWnd, &ps);

myPen = new Pen(Color(255, 255, 0, 0), 3);

myGraphics = new Graphics(hdc);

myGraphics->DrawLine(myPen, 20, 10, 200, 100);

delete myGraphics;

delete myPen;

EndPaint(hWnd, &ps);

转载地址:http://www.cppblog.com/dingding/archive/2008/06/27/54797.html

你可能感兴趣的:(Win32)