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消息。
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
- USB驱动之CDC类的介绍与应用20160905
USB的协议其实是很复杂的,如果要深入学习估计要一两年才能熟悉透.本文主要是讲如何使用官方已经写好的库进行二次开发,以达到我们自己使用的目的.我们知道USB可以用来接U盘,声卡,读卡器,鼠标键盘等等, ...
- USB CDC类
现代嵌入式系统中,异步串行通信接口往往作为标准外设出现在单片机和嵌入式系统中.但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失.于是嵌入式开发人员常常发 ...
- VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)
上一节中鸡啄米讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类. CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户 ...
- 【MFC】CDC::BitBlt介绍
CDC::BitBlt介绍 2011-11-04 08:25 19576人阅读 评论(6) 收藏 举报 摘自: http://blog.csdn.net/bberdong/article/detail ...
- VS2010-MFC(图形图像:CDC类及其屏幕绘图函数)
转自:http://www.jizhuomi.com/software/244.html 上一节讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类 ...
- CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)
前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上 ...
- CDC类
CDC :class of device context Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 .MFC基础类库定义了设备环境对象类----CD ...
- MediaRecorder类介绍
audiocallbackvideojavadescriptorencoding 目录(?)[+] 找到个MediaRecorder类介绍和大家分享一下. Mediarecorder类在官网的介绍和在 ...
- Object类介绍
一.Object类介绍
随机推荐
- Django学习系列19:完成最简单可用的网站——确保功能之间相互隔离
前面遗留的问题,首先时功能测试运行结束后的清理:其次是目前我们的待办清单只允许创建一个大家公用的清单. 如何隔离测试,运行功能测试后待办事项一直存在于数据库中,这会影响下一次测试. 运行单元测试时,D ...
- windows通讯之evpp
- 小程序wx.showToast()方法实现文字换行
小程序wx.showToast()方法实现文字换行 在文字中间加上 '\r\n' 真机中生效 wx.showToast({ title: `换行前内容\r\n换行后内容`, icon: 'none' ...
- puppet完全攻略(二)让puppet代码支持vim高亮显示
puppet完全攻略(二)让puppet代码支持vim高亮显示 2012-06-10 13:33:01 标签:puppet viong puppet完全攻略 原创作品,允许转载,转载时请务必以超链接形 ...
- hadoop中的JournalNode
1.在HADOOP扮演的角色 JournalNode是在MR2也就是Yarn中新加的,journalNode的作用是存放EditLog的, 在MR1中editlog是和fsimage存放在一起的然后S ...
- BZOJ 2836: 魔法树 (树链剖分+线段树)
板题-记得开longlong #include <cstdio> #include <cctype> #include <cstring> #include < ...
- 35. ClustrixDB 减少device1大小
ClustrixDB中的device1文件用于所有数据库数据.撤消日志.临时表.binlog和ClustrixDB系统对象.ClustrixDB确保device1文件在集群的所有节点上大小相同.一旦得 ...
- HZOJ 20190727 随(倍增优化dp)
达哥T1 实际上还是挺难的,考试时只qj20pts,还qj失败 因为他专门给出了mod的范围,所以我们考虑把mod加入时间复杂度. $50\%$算法: 考虑最暴力的dp,设$f[i][j]$表示进行$ ...
- 深度理解链式前向星——转载自ACdreamer
转载自ACdreamer [转载]深度理解链式前向星 我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序 ...
- Java web 简单的增删改查程序(超详细)
就是简单的对数据进行增删改查.代码如下: 1.bean层:用来封装属性及其get set方法 toString方法,有参构造方法,无参构造方法等. public class Bean { privat ...