CDC—图形设备类

为何需要CDC类
几乎所有的应用程序都需要在窗口中以某种方式来显示它们的数据,或者使用图形,或者使用文本,或者二者兼而有之。Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类
CDC与CGdiObject的关系
说道CDC类就不能不提一下GdiObject---图形对象类。 在Windows应用程序中,设备环境与图形对象共同工作,协同完成绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画笔。用画笔在画布上绘画,不同的画笔将画出不同的画来。选择合适的图形对象和绘图对象,才能按照要求完成绘图任务。
有关CDC类的继承
父类:从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。

子类:CClientDC-------代表操作窗口的DC ,是比较常用的一个子类

      CMetaFileDC ------响应Meta File的DC ,Meta File是一些GDI消息。

      CPaintDC-------响应WM_PAINT消息的DC。

      CWindowDC ------代表整个屏幕的DC
CDC类的数据成员
数据成员只有两个:
 HDC   m_hDC   : CDC对象使用的输出设备上下文

    HDC   m_hAttribDC : CDC对象使用的属性设备上下文
    二者在CDC对象创建时指向相同的设备上下文。

例子:
    使用前者的实例为输出函数SetTextColor,使用后者的实例为属性函数GetTextColor。
    CDC类提供了许多与窗口的客户区有关的设备环境中工作的成员函数,同样也提供了在全屏幕和打印机上工作的函数。
  CDC类提供的成员函数可以完成的操作包括:设备环境操作,使用绘图工具,安全类型的图形设备对象(GDI对象)的选择,使用颜色,调色板等。
  除此外,也可以完成诸如设置绘图属性,影射,在视中工作,在整个窗口中工作,坐标变换,区域操作,剪贴板操作,画线,画简单图形等各种工作。 
由CDC类要完成的工能我们就可以知道,其成员函数一定很多。的确,与其仅有的两个数据成员来说,其成员函数数量是极多的。
       有22组不同功能的函数集,将近150个函数。
      22组函数集分别如下:

1   构造函数 
             CDC           构造一个CDC实例
2   初始化函数 
          CreateDC   为专门的设备构造一个设备环境
          CreateCompatibleDC 构造一个与其它设备环境相适应的内存设备环境
          GetCurrentBitmap  返回一个现在所选择的位图的指针。
GetCurrentBrush  返回一个指向但前所选择的画刷对象指针
            GetCurrentFont  
            GetCurrentPalette
            GetCurrentPen
            GetWindow     返回一个与展示的设备环境相关的窗口
            SetOutputDC     设定m_hDC   输出设备环境
            SetAttribDC      设定m_hAttribDC  属性设备环境               
3 设备上下文函数 Device-Context  Functions
            SaveDC  保存现在的设备环境状态
            RestoreDC  取出原来所存的设备上下文状态
            IsPrinting  判断当前设备环境是否用于打印
4 有关选择的函数
           SelectObject 选择作图对象,如画笔,画刷,位图等
           SelectPalette 选择调色板
           SelectStockObject选择堆对象
5 线性输出函数
          GetCurrentPosition 获得当前的位置
MoveTo 移动到指定的位置.有两种类型:
MoveTo(int ,int) 和MoveTo(POINT)
            LineTo 从当前位置到指定位置之间画线 它也有两种类型的: LineTo(POINT), 和
LineTo(int, int)
            Arc 画弧线
6  画图函数
            FillRect 用指定的画刷填充矩形
            Draw3dRect 画三维的矩形
7 位图函数
         BitBlt 从指定的环境中复制为图 ,这个函数可以实现贴图,以及镂空图,半透明图等等
         GetPixel  获得指定像素的RGB颜色值,可以通过此函数对各个像素的颜色值进行操作,以达到各种效果 。
         FloodFill  用画刷填充一个区域
其实CDC 还有好多很有用的函数,大家有兴趣的话可以去查一下,在这里我就不再列举啦。
   要学好CDC类,实现好的图形界面,大家需要下点功夫。所以建议学习CDC 的同时学好一下的一些东西,例如CDC的几个子类;CGdiObject类;Bitmap类;和一些结构体,如POINT,RECT,RGB等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值