在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