分享

GDI编程基础

 woshifuhong 2007-05-04
GDI(Graphics Device Interface,图形设备接口)是在Windows平台上处理图形、图像的方法,它是一套API函数;它们功能丰富,使用起来简单、灵活。下面,我们首先来介绍一些GDI编程的基础知识。

GDI函数有很多,我们大致可以把它们分成如下几类:

  · 设备上下文(Device Context,简称DC)函数,如GetDC、CreateDC、DeleteDC等;

  · 画线函数,如LineTo、Polyline、Arc等;

  · 填充画图函数,如Ellipse、FillRect、Pie等;

  · 画图属性函数,如SetBkColor、SetBkMode、SetTextColor等;

  · 文本、字体函数,如TextOut、GetTextExtentPoint32、GetFontData等;

  · 位图函数,如SetPixel、BitBlt、StretchBlt等;

  · 坐标函数,如DPtoLP、LPtoDP、ScreenToClient、ClientToScreen等;

  · 映射函数,如SetMapMode、SetWindowExtEx、SetViewportExtEx等;

  · 元文件(MetaFile)函数,如PlayMetaFile、SetWinMetaFileBits等;

  · 区域(Region)函数,如FillRgn、FrameRgn、InvertRgn等;

  · 路径(Path)函数,如BeginPath、EndPath、StrokeAndFillPath等;

  · 裁剪(Clipping)函数,如SelectClipRgn、SelectClipPath等。

  上述这些函数可以完成绘制用户界面中的各个部分,包括我们在Windows平台上司空见惯的窗口、菜单、工具条、按钮等。除了完成显示操作功能外,GDI还提供了一些绘图对象,用以渲染显示。这些GDI对象包括:

  设备上下文(DC)——具有如显示器或打印机等输出设备的绘图属性信息的数据结构;

  画笔(Pen)——用于绘制线条;

  画刷(Brush)——用于图案的填充;

  字体(Font)——用于确定文本字符的样式;

  位图(Bitmap)——用于存储图像;

  调色板(Palette)——屏幕上画图时可以使用的一些颜色的集合。

  DC在GDI中是一个非常重要的概念。在MSDN上查看各个GDI函数的使用说明,我们会发现大部分GDI函数都有一个HDC类型的参数;HDC就是DC句柄。Windows应用程序进行图形、图像处理的一般操作步骤如下:

  1. 取得指定窗口的DC;

  2. 确定使用的坐标系及映射方式;

  3. 进行图形、图像或文字处理;

  4. 释放所使用的DC。

  为了进一步简化GDI函数的使用,或者说为了适应面向对象的程序设计风格,微软的MFC类库提供了几个DC的封装类。我们知道,绝大部分MFC类都是从 CObject类派生的,CDC类也不例外。我们看到,CDC类是最基本的DC封装类;它几乎对应封装了所有的GDI函数。另外,CDC类的各个派生类各有专门的用途:

  CClientDC——在窗口的客户区画图的DC;

  CMetaFileDC——用于操作Windows元文件的DC;

  CPaintDC——响应WM_PAINT消息时画图使用的DC,多见于MFC程序的OnDraw函数中;

  CWindowDC——在整个窗口范围(包括框架、工具条等)中画图的DC。

  MFC除了对DC进行类封装外,对其它GDI对象也进行了类封装。 

   CGdiObject——GDI对象的父类,定义了GDI对象封装类的一些公有函数接口;

  CBitmap——位图相关操作的封装类,包括位图的装入或创建等;

  CBrush——画刷对象的封装类;

  CFont——字体属性及相关操作的封装类;

  CPalette——调色板的封装类;

  CPen——画笔对象的封装类;

  CRgn——区域对象以及区域相关操作的封装类。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多