(转)关于DC和SelectObject()函数

使用内存DC防止窗口闪烁   在使用VC开发图形相关的应用程序时,常常需要使用MFC的CDC类直接把图形画在窗口上。这通常是通过响应Windows的WM_PAINT消息实现的。如果要画的图形比较复杂,或者比较大,那么画图过程可能会造成窗口的闪烁。当窗口调整大小时,这种闪烁由为明显。 解决窗口闪烁问题的有效办法就是使用内存DC,也称为缓冲DC。在内存中准备一个和窗口DC相同属性的DC,在这个内存DC上执行画图操作 阅读详情

对我这种大白,理解起来简单多了,怕有一天找不到,转过来。

转自:http://blog.youkuaiyun.com/goodai007/article/details/6928290


在GDI中,DC(Device context)是一个非常重要的概念。
有的书中,将DC翻译为设备描述表(《Windows 程序设计 第五版》作者Charles Petzold),
也有的书将DC翻译为设备上下文。
到底什么是DC?
用现实中的例子来理解可能更容易些。


如果你喜欢画画,你得先准备了画布,画笔,颜料……
画画的环境搭建好了,你就可以画画了。
这个画画的环境,就是DC。
在图形环境下,一切都是画出来的,所以,你要准备好一个DC,才能在屏幕上画画。——写字也是画画。


在画画的环境中,有哪些对象呢?
画布——GDI对象之一:区域
画笔——GDI对象之一:画笔
颜料盒——GDI对象之一:调色板


如果要在画笔上写字的话,写什么样的字体呢?方正字体?徐静蕾字体?——字体也是GDI对象之一。
有的画笔比较粗,专用来刷大面积背景色的,这是刷子——GDI对象之一:刷子
如果你不想画了,只想把别人画好的画,贴到你的画布上,这也是可以的。——GDI对象之一:位图。
所以,这里就有6种GDI对象可以用于DC。


现在开始画画了,你拿起了一只笔。——在Windows环境里,这叫选择了一个画笔对象:使用SelectOBject函数。当然,如果你没带笔也没关系,Windows为你准备了几只画笔,你可以这样申请系统提供的缺省画笔:hPen = GetStockObject(WHITE_PEN);


如果你画着画着,觉得手中的笔用着不爽,可以换一只啊,没关系的。——依旧是SelectObject()换笔。
若是画完一部分大树,准备画蓝色的天空,当你画完天空后继续画另一部分大树你得需要把画笔的颜色换回原先画大树的颜色。——你需要用SelectObject(m_pOldPoint)选回原先的颜色。
 
当然,如果你走出了画室,别忘了把你的画笔清除掉,要不画室里全是笔啊,刷子啊,太乱了。——DeleteObject()

基于SSM的大学生就业推荐系统:全流程与推荐算法实战解析 在Java Web开发中,SSM框架是经典的企业级技术栈,常用于构建业务逻辑清晰的管理系统。理解Spring、SpringMVC、MyBatis的分层协作原理,是开发可靠Web应用的基础。基于标签匹配的加权推荐算法,则能实现可解释的个性化推荐,提升系统的实用价值。在高校毕业生就业场景中,将上述技术整合,可构建一个覆盖简历管理、岗位发布、投递审核、面试邀约到录用通知的全流程就业推荐平台。本文围绕该系统的设计难点,从数据库表结构、推荐得分计算、状态流转控制到前后端联调,系统梳理了SSM项目从需求分析到工程落地的 阅读详情

相关推荐

EXCEL实现分层自定义比例随机抽样(图+文教程)

EXCEL实现分层自定义比例随机抽样(图+文教程) 单一字段分层自定义比例随机抽样 多字段分层自定义比例随机抽样 单一字段分层自定义比例随机抽样 首先数据源如下,我们想随机抽张三的金额数据10%、李四金额20%、王五5%、哈哈15%、李六10% 首先第一步,添加辅助列,随机数 =RAND() 对数据进行高级排序 升序、降序都可以 添加辅助列...

可乐联盟 2万+

浅析设备上下文(DC)

在GDI中,DC(Device context)是一个非常重要的概念。有的书中,将DC翻译为设备描述表(《Windows 程序设计 第五版》作者Charles Petzold),也有的书将DC翻译为设备上下文。到底什么是DC?用现实中的例子来理解可能更容易些。如果你喜欢画画,你得先准备了画布,画笔,颜料……画画的环境搭建好了,你就可以画画了。这个画画的环境,就是DC

fjclc2008的专栏 1125

CUDA 12.1环境下的动态库链接修复:从libcusparse.so.12的undefined symbol错误到libnvJitLink.so.12的正确加载

本文详细解析了在CUDA 12.1环境下,PyTorch因libcusparse.so.12找不到libnvJitLink.so.12中的__nvJitLinkAddData_12_1符号而报错的根本原因。通过诊断动态链接过程,提供了创建符号链接、修改环境变量等三种解决方案,并深入探讨了nvJitLink组件的作用及环境配置的最佳实践,帮助开发者彻底解决此类动态库链接问题。

c8d9e0f1的博客 206

GDI绘图中,SelectObject()函数作用

SelectObject()作用:选入一个GDI对象。同时会返回(选出)先前选入设备上下文的同类的GDI对象。 CPen newPen; CPen *oldPen; newPen.CreatePen(PS_SOLID,2,RGB(192,192,192));//创建对象 oldPen = pDC->SelectObject(&newPen);//将画笔选入设备描述表,并保存旧...

zxf347085420的博客 1538

ADS新手必看:用Filter DesignGuide快速搞定一个4GHz LC低通滤波器(附保姆级避坑指南)

本文为ADS新手提供了4GHz LC低通滤波器的完整设计流程,重点介绍了如何使用Filter DesignGuide避免参数设置陷阱、正确解读仿真结果以及解决实际电路与理论值的偏差问题。通过真实工程案例,详细讲解了工程创建、Filter DesignGuide配置、电路优化、仿真设置及实际工程中的进阶技巧,帮助工程师快速掌握LC滤波器设计。

weixin_30878501的博客 301

openssl命令数据摘要详解(SM3、sha256、MD5、dss1、mdc2、ripemd160)

SM3是由中国密码学家设计的密码哈希函数,是中国国家密码管理局(National Cryptographic Authority,简称:CNCA)颁布的国家密码算法标准。SM3属于密码杂凑函数家族,它可以计算任意长度的消息并生成固定长度(256比特,即32字节)的哈希值。SM3生成的哈希值长度为256比特(32字节),不管输入消息的长度如何,输出始终是固定的。SM3将输入数据划分为512比特(64字节)的分组,并对每个分组进行处理。

N阶二进制的博客 4460

MFC之DC

1.       GetDC与ReleaseDc连用 GetDc是检索公用设备上下文环境 ReleaseDc释放设备上下文环境 2. CreateCompatibleDC  和 CreateCompatibleBitmap CreateCompatibleDC  创建一个与指定设备兼容的内存设备上下文环境(DC)。 CreateCompatibleBitmap  该函数创建与指

zhuyanling0106的专栏 782

使用cutoff包基于最小p值法方法计算最佳截断值(基于LIRI基因数据集) R语言

这个方法在生物学研究中具有重要的意义,能够帮助我们从大规模基因表达数据中准确地找到差异显著的基因。在上述代码中,calculate_p_values函数是一个自定义函数,用于计算差异表达基因的p值。在本文中,我们将介绍如何使用R语言的cutoff包来基于最小p值法方法计算最佳的截断值,以便筛选出差异显著的基因。通过以上步骤,我们成功地使用cutoff包基于最小p值法方法计算了最佳的截断值,并筛选出了差异显著的基因。最后,我们可以根据得到的最佳截断值将基因表达数据集进行筛选,提取出差异显著的基因。

ByteKnight的博客 1291

SelectObject()函数

SelectObject  把一个对象(位图、画笔、画刷等)选入指定的设备描述表。新的对象代替同一类型的老对象。 HGDIOBJ SelectObject(   HDC hdc,          // handle to DC   HGDIOBJ hgdiobj   // handle to object );

ghevinn欢迎您光临 2万+

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4962

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 658

关于DC和SelectObject()函数的理解

在GDI中,DC(Device context)是一个非常重要的概念。 有的书中,将DC翻译为设备描述表(《Windows 程序设计 第五版》作者Charles Petzold), 也有的书将DC翻译为设备上下文。 到底什么是DC? 用现实中的例子来理解可能更容易些。 如果你喜欢画画,你得先准备了画布,画笔,颜料…… 画画的环境搭建好了,你就可以画画了。 这个画画的环境,就是

破空的专栏 1万+

AI上推荐 之 AutoInt模型(Transformer开始玩特征交互)

1. 写在前面 这段时间做优化模型的事情,正好和特征交互有关系,这个也是推荐系统里面一直探索的一个方向,从浅层模型的FM, FFM, HOFM, FwFM到深层模型的DNN, PNN, NFM, AFM, DeepFM, DCN, xDeepFM, FiBiNet等,而这次正好借着这次机会, 多看一些有关于特征交叉方向的模型paper, 把一些新的模型或者较为前沿的思想融入进来。 上一篇的FiBinet模型就是在特征交互上一个非常有意思的探索, 通过SENET动态选择有用的交互特征, 然后再用一个双线性交互

Miracle8070 5724

c++ GDI 中SelectObject使用方法和注意事项

CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pR

wzk456的专栏 3688

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SelectObject()函数详解

 SelectObject 把一个对象(位图、画笔、画刷等)选入指定的设备描述表。新的对象代替同一类型的老对象。 ? HGDIOBJ SelectObject(   HDC hdc,          // handle to DC   HGDIOBJ hgdiobj   // handle to object );

xrzh8989的专栏 2478

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

详细介绍SelectObject()

书籍:《Visual C++ 2017从入门到精通》的2.3.8 Win32控件编程环境:visual studio 2022内容:【例2.33】字体选择对话框说明:以下内容大部分来自腾讯元宝。函数原型: ​参数: :设备上下文(Device Context, DC)的句柄,指定对象将被选入的设备环境。 :被选择对象的句柄,需由特定 GDI 创建函数生成(如 、 等)。 ​返回值: 成功时返回被替换对象的句柄(如原画笔或位图); 若选择对象是区域(Region),

felicity_one的博客 885

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于SelectObject之后是否要恢复之前的GDI对象

以下列代码为例 { // 创建内存DC CDC mMemDc; mMemDc.CreateCompatibleDC( &dc ); // 创建兼容位图 CBitmap bmpMemBmp; ...

狂奔之林的博客 546

在DC操作中SelectObject后要注意释放内存

在DC的操作中,SelectObject后要注意释放内存,不然很容易内存泄漏 CDC dcMem; CBitmap bmpMem; dcMem.CreateCompatibleDC(&dc); bmpMem.CreateCompatibleBitmap(&dc,800

Leckun的专栏 9041

形象解释DC、绘图编制过程以及各个对象、SelectObject()、DeleteObject()

在GDI中,DC(Device context)是一个非常重要的概念。 有的书中,将DC翻译为设备描述表(《Windows 程序设计 第五版》作者Charles Petzold), 也有的书将DC翻译为设备上下文。 到底什么是DC? 用现实中的例子来理解可能更容易些。 如果你喜欢画画,你得先准备了画布,画笔,颜料…… 画画的环境搭建好了,你就可以画画了。

asdjy123的专栏 833

关于SelectObject的使用

关于SelectObject的使用 void CMy10View::OnDraw(CDC* pDC)  {  pDC->MoveTo (10,10);  pDC->LineTo (110,10);  CPen newPen(PS_DASHDOTDOT,10,(COLORREF) 192); //红色的笔宽度为10  CPen * pOldPen=pDC->SelectObject (&

高调做事,低调做人 8028

什么是DC,以及CreateCompatibleDC,CreateCompatibleBitmap,SelectObject的作用

什么是DC,以及CreateCompatibleDC,CreateCompatibleBitmap,SelectObject的作用

tc1175307496的博客 4650

SelectObject

CPen* SelectObject( CPen* pPen );   CBrush* SelectObject( CBrush* pBrush );   virtual CFont* SelectObject( CFont* pFont );   CBitmap* SelectObject( CBitmap* pBitmap );   int Select

pjz969的专栏 664
下一篇: C++中引用(&)的用法和应用实例
worldbit
博客等级 码龄15年 31粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值