• 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

  • 相关阅读:
    21 情态动词
    20 动词的用法
    19 完成时/现在完成时和过去完成时的区别
    18 将来时
    17 一般过去时和过去进行时
    16 一般现在时和现在进行时
    15 There / Here be句型
    14 不定量表达法
    13 副词
    12 形容词
  • 原文地址:https://www.cnblogs.com/d3inc/p/3799908.html
Copyright © 2020-2023  润新知