zoukankan      html  css  js  c++  java
  • CDC类介绍

    CDC类

    中文介绍

    CDC类定义的是设备上下文对象的类。
    CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。
    通过CDC对象的成员函数进行所有的绘图。
    类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板
    它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆和多边形等形状提供了成员函数。
    另外还为绘制文本、处理字体,使用打印机跳转,滚动和播放元文件提供成员函数。
    使用CDC对象时要构造它,然后调用与它平等的、使用设备上下文的Windows函数的成员函数。
    注意:
    Windows 95下所有屏幕坐标限制在16位以内。因此向CDC成员函数传递的int必须在-32768至32767之间。
    Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。

    程序设计信息

    Uses m_hAttribDC
    Uses m_hDC
    GetOutputTextExtent
    GetOutputTabbedTextExtent
    GetOutputTextMetrics
    GetOutputCharWidth
    For more information onCDC, seeDevice ContextsinVisual C++ Programmer's Guide.
    #include <afxwin.h>

    CGdiObject

    说到CDC类就不能不提一下CGdiObject---图形对象类。 在Windows应用程序中,设备环境与图形对象共同工作,协同完成绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画笔。用画笔在画布上绘画,不同的画笔将画出不同的画来。选择合适的图形对象和绘图对象,才能按照要求完成绘图任务。

    3CDC继承

    父类:从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。
    子类:CClientDC-------代表操作窗口的DC ,是比较常用的一个子类
    CMetaFileDC ------响应Meta File的DC ,Meta File是一些GDI消息。
    CPaintDC-------响应WM_PAINT消息的DC。
    CWindowDC ------代表整个屏幕的DC

    4数据成员

    数据成员只有两个:
    HDC m_hDC : CDC对象使用的输出设备上下文
    HDC m_hAttribDC : CDC对象使用的属性设备上下文
    二者在CDC对象创建时指向相同的设备上下文。
    所需头文件:#include <afxwin.h>

    5成员函数

    CDC类有很多成员函数,这里主要介绍比较常用的绘图成员函数,包括绘制点、直线、矩形、椭圆、多边形、文本以及位图等的成员函数。
    COLORREF SetPixel(int x,int y,COLORREF crColor);
    COLORREF SetPixel(POINT point,COLORREF crColor);
    上面两个成员函数用来将指定坐标点的像素设置为指定的颜色,这样就实现了画点功能。参数x为点的逻辑x坐标;参数y为点的逻辑y坐标;参数crColor为要为点设置的颜色;参数point指定点的逻辑x坐标和逻辑y坐标,可以为其传入POINT结构体变量或者CPoint对象。
    CPoint MoveTo(int x,int y);
    CPoint MoveTo(POINT point);
    将当前点移动到指定位置。参数x指定新位置的逻辑x坐标;参数y指定新位置的逻辑y坐标;参数point指定新位置的逻辑x坐标和逻辑y坐标,可以为其传入POINT结构体变量或者CPoint对象。
    BOOL LineTo(int x,int y);
    BOOL LineTo(POINT point);
    绘制一条从当前点到指定点(不包括指定点)的直线。参数x为指定点的逻辑x坐标;参数y为指定点的逻辑y坐标;参数point为指定点的逻辑x坐标和逻辑y坐标。一般我们绘制直线时就可以先调用MoveTo函数移动当前点到某个位置,然后调用LineTo画直线。
    BOOL Rectangle(int x1,int y1,int x2,int y2);
    BOOL Rectangle(LPCRECT lpRect);
    使用当前画笔绘制矩形。参数x1指定矩形左上角的x坐标;参数y1指定矩形左上角的y坐标;参数x2指定矩形右下角的x坐标;参数y2指定矩形右下角的y坐标;以上坐标均为逻辑单位。参数lpRect为矩形对象的指针,可以为其传入CRect对象或RECT结构体变量的指针。
    BOOL Ellipse(int x1,int y1,int x2,int y2);
    BOOL Ellipse(LPCRECT lpRect);
    绘制椭圆。参数x1指定椭圆的外接矩形左上角的x坐标;参数y1指定椭圆的外接矩形左上角的y坐标;参数x2指定椭圆的外接矩形右下角的x坐标;参数y2指定椭圆的外接矩形右下角的y坐标;以上坐标均为逻辑单位。参数lpRect指定椭圆的外接矩形,可以传入CRect对象或RECT结构体变量的指针。
    BOOL Polyline(LPPOINT lpPoints,int nCount);
    由指定的多边形顶点绘制多边形。参数lpPoints为指向一个POINT结构体变量数组或CPoint对象数组的指针,其中的POINT结构体变量或CPoint对象代表了多边形顶点的坐标;参数nCount为数组中点的个数,至少为2。
    virtual BOOL TextOut(int x,int y,LPCTSTR lpszString,int nCount);
    BOOL TextOut(int x,int y,const CString& str);
    使用当前选择的字体在指定位置输出文本。 参数x指定文本起始点的x坐标;参数y指定文本起始点的y坐标;参数lpszString为要输出的文本字符串;参数nCount指定字符串中的字节个数;参数str为包含要输出的字符的CString对象。这两个函数在上一节中其实已经讲到了。
    BOOL BitBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    DWORD dwRop
    );
    从源设备上下文拷贝一幅位图到当前设备上下文。参数x指定目标矩形区域左上角的逻辑x坐标;参数y指定目标矩形区域左上角的逻辑y坐标;参数nWidth指定目标矩形区域和源位图的宽度(逻辑单位);参数nHeight指定目标矩形区域和源位图的高度(逻辑单位);参数pSrcDC为指向源设备上下文的CDC对象的指针,如果dwRop指定了一个不包含源的光栅操作,那么pSrcDC可以为NULL;参数xSrc指定源位图左上角的逻辑x坐标;参数ySrc指定源位图左上角的逻辑y坐标;参数dwRop指定要执行的光栅操作,光栅操作码定义了GDI如何将当前画刷颜色、源位图颜色和目标位图颜色组合形成新的颜色,下面是一些常用的光栅操作码及含义:
    BLACKNESS:表示使用与物理调色板的索引0相关的色彩来填充目标矩形区域,(对缺省的物理调色板而言,该颜色为黑色)。
    DSTINVERT:表示使目标矩形区域颜色取反。
    MERGECOPY:表示使用布尔型的AND(与)操作符将源矩形区域的颜色与特定模式组合一起。
    MERGEPAINT:通过使用布尔型的OR(或)操作符将反向的源矩形区域的颜色与目标矩形区域的颜色合并。
    NOTSRCCOPY:将源矩形区域颜色取反,于拷贝到目标矩形区域。
    NOTSRCERASE:使用布尔类型的OR(或)操作符组合源和目标矩形区域的颜色值,然后将合成的颜色取反。
    PATCOPY:将特定的模式拷贝到目标位图上。
    PATPAINT:通过使用布尔OR(或)操作符将源矩形区域取反后的颜色值与特定模式的颜色合并。然后使用OR(或)操作符将该操作的结果与目标矩形区域内的颜色合并。
    PATINVERT:通过使用XOR(异或)操作符将源和目标矩形区域内的颜色合并。
    SRCAND:通过使用AND(与)操作符来将源和目标矩形区域内的颜色合并。
    SRCCOPY:将源矩形区域直接拷贝到目标矩形区域。
    SRCERASE:通过使用AND(与)操作符将目标矩形区域颜色取反后与源矩形区域的颜色值合并。
    SRCINVERT:通过使用布尔型的XOR(异或)操作符将源和目标矩形区域的颜色合并。
    SRCPAINT:通过使用布尔型的OR(或)操作符将源和目标矩形区域的颜色合并。
    WHITENESS:使用与物理调色板中索引1有关的颜色填充目标矩形区域。(对于缺省物理调色板来说,这个颜色就是白色)。[1
  • 相关阅读:
    3.css3文字与字体
    2.css3表示颜色的几种方式
    测试ssh转发
    硬盘相关合集,以及LVM操作实践
    linux硬件驱动
    启动nfs清除端口占用过程
    postgres10.2时区研究
    git submodule临时分支;以及git reset使用
    sudo环境变量问题;程序库函数寻找
    linuxI/O重定向
  • 原文地址:https://www.cnblogs.com/zhangq/p/4195689.html
Copyright © 2011-2022 走看看