CDC简介

vc++中的cdc类(vc++学习笔记) <br />     在学习VC++中,CDC类是在显示数据,或者使用图形,或者使用文本中必不可少的。Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。 <br />CDC与CGdiObject的关系 <br />    说道CDC类就不能不提一下GdiObject---图形对象类。 在Windows应用程序中,设备环境与图形对象共同工作,协同完成绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对 阅读详情

CPaintDC dc(this);
CDC  *dc=GetDlgItem(IDC_STATIC)->GetDC();
CDC  *dc=GetDC();

DC(Device Context) 设备上下文,可以理解为我们要在上面写写画画的那张纸。VC中有CDC,CClientDC,CPaintDC。

CDC是Windows绘图设备的基类。

CClientDC:
(1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC。

CPaintDC:
(1)用于响应窗口重绘消息(WM_PAINT)是的绘图输出。
(2)CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。
(3)CPaintDC也只能用在WM_PAINT消息处理之中。

CWindowDC:
(1)可在非客户区绘制图形,而CClientDC,CPaintDC只能在客户区绘制图形。
(2)坐标原点是在屏幕的左上角,CClientDC,CPaintDC下坐标原点是在客户区的左上角。
(3)关联一特定窗口,允许开发者在目标窗口的任何一部分进行绘图,包含边界与标题,这种DC同WM_NCPAINT消息一起发送。


兼容的DC指不是具体的图形设备,而是虚拟的设备,例如我们可以建一个虚拟的DC来存放和画bitmap,兼容DC的类可以理解成CDC的派生类,可以调用CDC的各种绘图函数。
举几个例子吧,

1、在整个屏幕上画画

创建一个基于对话框的MFC AppWizard(exe),添加一个按钮 button1,建立相关联的响应函数OnButton1(),在函数中添加如下代码:

//获取当前桌面的指针

CWnd* pwnd = GetDesktopWindow();

//获取当前桌面的设备上下文

CDC* pdc = pwnd->GetWindowDC();

//画图

for(int x = 0; x < 600; x++)
    for(int y = 0; y < 400; y++)
          pdc->SetPixel(x,y,x*y);

编译->运行。

关闭程序,会发现桌面的图画还是存在,怎么在关闭对话框程序后使得图画也消失呢?

可以在classwizard中添加一个WM_ONDESTROY消息,并为它创建OnDestroy()函数,在函数中添加如下代码:

GetDesktopWindow()->RedrawWindow(NULL,NULL,RDW_INVALIDATE|RDW_ALLCHILDREN|RDW_ERASENOW);

就ok了。

2、在对话框上画画

接着怎么在生成的对话框中画画呢,可以用CClientDC即当前程序的设备上下文。创建第二个按钮button2和对应的响应函数OnButton2(),在OnButton2()中添加如下代码:

 CClientDC pdc(this);
 for(int x = 0; x < 200; x++)
    for(int y = 0; y < 200; y++)
          pdc.SetPixel(x,y,x*y);

如果要为对话框设置一个背景画呢,那就要重写OnPaint()函数了,将OnPaint()中的代码用以下代码替换:

CPaintDC pdc(this);

RECT* prect = &pdc.m_ps.paintrect;

for(int x = 0; x < prect->right; x++)
    for(int y = 0; y < prect->bottom; y++)
          pdc->SetPixel(x,y,x+y);

3、在控件上画画

CDC  *dc=GetDlgItem(IDC_STATIC)->GetDC();
//CDC  *dc=GetDC();

for(int i=0;i<500;++i)
 dc->SetPixel(10+i,10+i,0x0000ff);//用画点的办法画一根线,最后一个参数是颜色(32位)

CPen pen(PS_SOLID,2,0x00ff00); //生成绿色画笔
CPen *OldPen=dc->SelectObject(&pen);//把画笔引入设备场境


dc->MoveTo(20,50); //设置画线起点
dc->LineTo(520,550);      //画到终点

dc->Arc(100,100,300,300,350,500,350,500);//画圆

dc->SelectObject(OldPen);

ReleaseDC(dc);

flink cdc笔记(一):flink cdc简介 flink cdc 阅读详情

相关推荐

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

MFC编程之三: 绘图-1(画图)

绘图一般在视图类的(屏幕/打印机)绘图消息响应函数OnDraw中进行,例如:void CTestView::OnDraw(CDC* /*pDC*/) {       CTestDoc* pDoc = GetDocument();       ASSERT_VALID(pDoc);       if (!pDoc)              return;       //

fish_1001的专栏 6596

使用 Mid360 从零开始搭建实物机器人入门级导航系统 —— 基于 Fast_Lio 和 Move_Base

本文详细介绍了如何使用Mid360机器人从零开始搭建一个基于Fast_Lio和Move_Base的入门级导航系统。通过配置 ROS2、集成激光雷达、IMU、Fast_Lio、Move_Base 等模块,我们成功构建了一个能够实现自动导航的机器人系统。在实际开发中,随着需求的变化,你可以不断调整参数、优化路径规划算法、增加新的传感器等,逐步提升机器人的智能与功能。

小蜗牛的珍贵百宝箱 3564

CDC的解析

CDC应用   M F C用C D C类封装了一个设备环境对象, CDC的成员变量m _ h d c指向它所拥有的设备环境,用户可以创建四种类型的设备环境: ■ 屏幕。 ■ 打印机。 ■ 只有打印机的信息部分。 ■ 位图。 创建一个屏幕设备环境,可以用: CDC * pDC=GetDC( ); 这里的GetDC( )是CWnd类的成员函数,它返回一个允许用户绘

xulelehappy的专栏 877

数据讲述中国故事!和鲸助力中国综合社会调查(CGSS)数据分析与可视化大赛圆满收官

用数据研究中国问题、总结中国道路、讲述中国故事。和鲸作为协办单位全程支持本次大赛,为中国人民大学中国调查与数据中心实施全套赛事系统,同时提供完备而周全的赛事运营服务。

ModelWhale的博客 1410

vasp算表面吸附流程_VASP表面吸附计算实例分析

本文主要为了记录在学习Vasp计算过程中如何设置INCAR中的一些参数,并不着重讲解其含义,详见可自行到vasp官网查阅。其次关于建模部分也不做细致讨论,一般结构可从Materials Studio里自带的晶体数据库导出,或从三大数据库网站上下载:1、Materaials Project网址:https://materialsproject.org/(强烈推荐,邮箱注册即可使用)2、CCDC网址:...

weixin_39617669的博客 2240

GetDC(),ReleaseDC()

用GetDC()得到的DC,必须调用ReleaseDC()用CreateDC()创建的DC,必须调用DeleteDC()两者是不能混淆的.一种典型的错误代码如下:CDC*pDC=GetDC();…..//做一些无聊的事…..pDC->DeleteDC();//做了错误的事一般情况下,上面这个代码也能够工作,就是有时要报一点CHandleMap::RemoveHand...

1228

集成学习之GBDT

GBDT

joejoeqian的博客 1257

CDC

CDC 1、何为CDC? 数据仓库中捕获变化数据(CDC,Changed Data Capture) CDC能够帮助你识别从上次提取之后发生变化的数据。 利用CDC,在对源表进行INSERT、UPDATE或 DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。 (1)侵入式CDC:是指CDC...

weigu_520的博客 1441

基于Lstm+transformer的刀具磨损预测实战

基于Lstm+transformer的刀具磨损预测实战

2906

告别手动读摘要!爬虫+大模型做学术助手:爬知网论文,10秒生成摘要+关键词(附完整代码)

知网的官方摘要往往冗长(200-300字),关键词可能不够精准,用大模型提炼“100字精简摘要”和“3-5个核心关键词”,更适合快速筛选文献。这套学术助手的核心价值,是把“找论文、读摘要、提关键词”这些重复劳动,交给爬虫和大模型自动化完成,让科研人从繁琐的文献整理中解放出来,把时间花在实验设计、数据分析等核心工作上。需要注意的是:爬取知网论文仅用于个人科研和学习,不得用于商业用途,遵守知网的用户协议和版权规定;大模型生成的摘要和关键词需后续核对原文,确保准确性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1942

CDC类的简介

CDC类:        Windows使用与设备无关的图形设备环境(DC :Device Context)进行显示。MFC基础类库定义了设备环境对象类----CDC类。        CDC类从 CObject 直接继承而来。继承了CObject类的各种特性,如动态创建等等。    ...

Loewen丶的小窝 2984

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

USB CDC简介

CDC类设备枚举过程USB CDC类、USB2.0标准与PSTN之间的关系CDC(Communication Device Class)类是USB2.0标准下的一个子类,定义了通信相关设备的抽象集合。

l00102795的博客 960

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Oracle CDC简介及设置实例

[转] https://blog.youkuaiyun.com/l19901215/article/details/56296622 一、增量数据采集概述 数据采集通常是指ETL过程中Extract-数据抽取部分。除了ETL外在不同应用系统之间通常也需要传递数据,在某些环境条件限制下不能将数据从一个系统直接移到另一个系统,只能借助文本来作为中间媒介传递数据,且文本的生成有时间窗口的限制,所以对数据采集即数据...

徐子云的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Oracle CDC简介及异步在线日志CDC部署示例

本文源自:https://www.cnblogs.com/bendsha/p/cdc_bend.html 摘要 最近由于工作需要,花时间研究了一下Oracle CDC功能和LogMiner工具,希望能找到一种稳定、高效的技术来实现Oracle增量数据抽取功能。以下是个人的部分学习总结和部署实践。 1. Oracle CDC 简介 很多人都认为,只要是涉及到数据库数据复制和增量数据抽取,都是需要购买收费软件的。实际上,我们通过Oracle提供的CDC和LogMiner等免费工具也能实现数据库数据复制和

数据库生态圈(RDB & NoSQL & Bigdata)——专注于关系库应用与研究(Oracle & Mysql & Postgresql & SQL Server ) 1657

CDC类简介

HDC为设备环境的句柄,Windows为了使得在绘制屏幕编程方面变得更为简单,在操作系统之中集成了一个叫做虚拟显示器,这个虚拟显示器有专门的通用API,这个就是我们说的GDI(图形设备接口),之后无论我们的屏幕硬件怎么变化,都可以使用这一套通用的API进行图形的各种显示。 HDC句柄就是指向这个虚拟显示器的指针,有了HDC的

一个早起的程序员 3万+

XPM_CDC简介

转:https://zhuanlan.zhihu.com/p/147058600 上一篇文章介绍了 单比特跨时钟域 的不同应用场景的区别(基于Xilinx Parameterized Macros),主要有: 同步Reset (XPM_CDC_SYNC_RESET) 异步Reset (XPM_CDC_ASYNC_RESET) 电平信号 (XPM_CDC_SINGLE) 脉冲信号 (XPM_CDC_PULSE) 这篇我们来看一下这几个Macro的具体设计细节和原理。我会基于Xilinx Guide的

lijq94的博客 8760

Apache Flink CDC简介与使用

CDC (Change Data Capture) Flink在1.11版本中新增了CDC的特性,简称 改变数据捕获。名称来看有点乱,我们先从之前的数据架构来看CDC的内容。 以上是之前的mysql binlog日志处理流程,例如canal监听binlog把日志写入到kafka中。而Apache Flink实时消费Kakfa的数据实现mysql数据的同步或其他内容等。拆分来说整体上可以分为以下几个阶段。 mysql开启binlog canal同步binlog数据写入到kafka

CainGao 2222

Flink基础系列35-Flink CDC简介

文章目录一. Flink CDC介绍二.Flink CDC 实操2.1 MySQL配置2.2 pom文件2.3 Java代码2.4 测试结果参考: 一. Flink CDC介绍   Flink在1.11版本中新增了CDC的特性,简称 改变数据捕获。名称来看有点乱,我们先从之前的数据架构来看CDC的内容。   以上是之前的mysql binlog日志处理流程,例如canal监听binlog把日志写入到kafka中。而Apache Flink实时消费Kakfa的数据实现mysql数据的同步或其他内容等。拆分来说

只是甲的博客 1161

MFC绘图类(CDC,CPaintDC,CClientDC,CWindowDC)简介

MFC绘图类(CDC,CPaintDC,CClientDC,CWindowDC)简介

weixin_37603532的博客 535

USB-CDC协议资源文件简介

USB-CDC协议资源文件简介 【下载地址】USB-CDC协议资源文件简介 这份详尽的USB通信设备类(CDC)协议资源文件为开发者提供了全面的英文版技术资料,深入解析了USB-CDC协议的框架、数据传输机制及编程接口。作为USB规范的重要组成部分,CDC协议定义了通信设备类的数据传输标准,是开发USB类设备的核心技术参...

gitblog_06741的博客 389

ibm cdc简介

在异构数据存储器中复制信息 IBM? InfoSphere? Change Data Capture 能够近乎实时地复制异构数据,以支持数据迁移、应用程序整合、数据同步、动态仓储、主数据管理 (MDM)、业务分...

1297
上一篇: DC保存至BMP图像
下一篇: sqlite全文查询配置到使用全过程
desow
博客等级 码龄17年 36粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值