首页 > 应用 > EDA
[导读]Windows 程序在屏幕、打印机或其它设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表表示的逻辑意义上的"显示平面"上去。设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有

Windows 程序在屏幕、打印机或其它设备上画图时,它并不是将像素直接输出到设备上,而是将图绘制到由设备描述表表示的逻辑意义上的"显示平面"上去。设备描述表(DC)是Windows中的一种数据结构,它包含GDI需要的所有关于显示界面情况的描述字段,包括相连的物理设备和各种各样的状态信息。在Windows画图之前,Windows程序从GDI获取设备描述表句柄(HDC),并在每次调用完GDI输出函数后将句柄返回给GDI。本文将对如何获得和释放 HDC以及 CDC及其派生类的使用方法进行演示说明。

下载示例工程 DCDemo 具体说明:

1、按钮 IDC_GETDC_APINULL的函数

void CDCDemoDlg::OnGetdcApinull()
{ HDC hDC=::GetDC(NULL);
::MoveToEx(hDC,0,0,NULL);
LineTo(hDC,200,20);
::ReleaseDC(NULL,hDC); }

该段代码具体演示了如何使用API 函数GetDC(NULL),取得屏幕的HDC.并进行画图。 HDC GetDC(HWND hWnd); //功能:取得hWnd窗口的设备描述表句柄。当hWnd参数为NULL时,取得整个屏幕的设备描述表句柄。 MoveToEx和LineTo演示在DC上画一条直线记住,最后调用ReleaseDC释放HDC资源。 int ReleaseDC ( HWND hWnd,//你要控制的那个窗口的句柄,如果你在GetDC函数传递的是NULL,现在还要传递NULL。 HDC hDC //DC的句柄 ); 编译运行程序,按下按钮,发现屏幕的左上角处画了一条直线。

2、按钮 IDC_GETDC_API的函数

void CDCDemoDlg
::OnGetdcApi()
{ HDC hDC=::GetDC(m_hWnd);
::MoveToEx(hDC,0,0,NULL);
LineTo(hDC,200,50);
::ReleaseDC(m_hWnd,hDC); }
 
这段代码与前一段代码唯一的区别是GetDC的参数不再是NULL,而改为CWnd的成员变量m_hWnd,即对话框窗口的句柄。对比两段代码运行结果,深入体会API函数 GetDC。

3、按钮IDC_GETDC_CWND的函数

void CDCDemoDlg::OnGetdcCwnd()
{ CDC *pDC=GetDC();
pDC->MoveTo(0,0);
pDC->LineTo(200,100);
ReleaseDC(pDC); }

该段代码演示使用MFC CWnd类的 GetDC函数和ReleaseDC的方法,使用该方法在程序窗口中画图非常方便。为了避免获取和释放设备描述表所带来的麻烦,MFC提供了一些CDC派生类,如CPaintDC,CClientDC,CWindowDC,这些类被设计为可直接进行实例化。各个类的构造函数和析构函数调用相应的函数捕获和释放设备描述表,从而使得更加方便简捷。

4、按钮IDC_CCLIENTDC的函数

void CDCDemoDlg::OnCclientdc() {
 CClientDC dc(this);
 CBrush brush(RGB(255,0,0));
 dc.FillRect(CRect(0,0,100,100),&brush); }
 
该段代码演示了 CClientDC的具体使用方法,通过测试可以看出和 CClientDC对象相对应的设备描述表是窗口的客户区 。 CPaintDC类是从CDC类派生出来的,在构造时自动调用CWnd::BeginPaint,析构时调用CWnd::EndPaint。通常CPaintDC用来响应WM_PAINT消息,一般应用在OnPaint函数,对窗口的客户区进行操作。

5、按钮IDC_CWINDOWDC的函数

void CDCDemoDlg::OnCwindowdc()
{ CWindowDC dc(this);
CPen pen(PS_SOLID,3,RGB(0,255,0));
CPen *pOldPen=dc.SelectObject(&pen);
dc.MoveTo(0,0);
dc.LineTo(200,200);
dc.SelectObject(pOldPen); }

运行并观察画线的起始位置。可以看出CWindowDC对象和整个窗口相对应。

6、按钮IDC_POINTER的函数

void CDCDemoDlg::OnPointer()
{ CWindowDC *pDC;
pDC=new CWindowDC(this);
pDC->MoveTo(0,0);
pDC->LineTo(200,250);
delete pDC; }

这段代码演示了如何在堆中创建指向CDC派生类的指针,再利用该指针进行画图,最后请使用delete pDC; 释放指针。



来源:ks990次

本文引用地址: http://www.21ic.com/app/eda/201806/769785.htm

换一批

延伸阅读

[测试测量] 电力设备红外测温系统的研究与应用

电力设备红外测温系统的研究与应用

 【中图分类号】TM835.4【文献标识码】A【文章编号】1672-5158(2012)11-0296-01  1、系统原理  带电设备的红外诊断技术利用带电设备的致热效应,采用专用仪器获取从设备表面发出的红外辐射信息,进而判断设备......

关键字:电力设备 红外测温系统 在线监测

[最新资讯] 【Mr. Green】降低插头载荷设备能耗的新兴技术

【Mr. Green】降低插头载荷设备能耗的新兴技术

8月15日,加州能源委员会举办了一次有关“新兴技术:插头载荷设备的移动效率”的网络研讨会。在本次研讨会上,来自Aggios的Vojin Zivojnovic和Davorin Mista介绍了一项研究项目,该研究将移动设备设计实务与硬件及能源......

关键字:插头载荷设备

[单片机应用] Tiny6410 设备驱动之helloworld

Tiny6410 设备驱动之helloworld

在自己的工作目录下建立helloworld_driver.c#include#include//代码遵守的license:BSDGPLMODULE_LICENSE("DualBSD/GPL");//代码作者声明MODUL......

关键字:Tiny6410 设备驱动

[通信技术] 防堵华为?英国警告电信厂商谨慎选择5G设备

防堵华为?英国警告电信厂商谨慎选择5G设备

这已经不是第一个国家对华为甚至是中国的5G设备设起防备了。美国与中国翻脸后,不仅严格禁止自家网络采用华为 5G 设备,连友邦也被迫必须选边站,被要求跟进美国防堵华为。 ......

关键字:5G设备 华为 电信基础设施

[通信技术] 华为5G之路不好走!美国游说盟国弃用华为5G产品

华为5G之路不好走!美国游说盟国弃用华为5G产品

消息称,华盛顿对盟国展开超乎寻常的游说行动,希望盟国境内的无线通讯暨网络提供商,别再使用华为产品。联网时代到来,监控及恶意行为愈来愈难防范,华盛顿的最新行动,显示中美科技冷战已经愈演愈烈。 ......

关键字:华为 5G 电信设备

[通信技术] 中兴三星5G竞争激烈,运营商很高兴!

中兴三星5G竞争激烈,运营商很高兴!

鉴于中兴通讯此前遭遇的问题,行业观察家可能会对这样一个雄心勃勃的目标嗤之以鼻。不管看起来合理与否,中兴通讯设备和服务定价极具竞争力这样的行业认知,应该有助于其达成交易。但该公司坚称,其技术实力和为客户提供的支持才是真正重要的。它正在以牺牲利......

关键字:中兴 三星 5G 通讯设备

[行业新闻] 互联照明,比你想象的规模更大

互联照明,比你想象的规模更大

蓝牙设备网络可实现楼宇基本系统的自动化集中控制,包括HVAC(暖通空调)、安防和照明等,从而节省能源,降低运营成本并提高楼宇核心系统的使用寿命。目前,互联照明在大规模用例中最受欢迎。 ......

关键字:互联照明 蓝牙设备

[测试测量] 罗德与施瓦茨展示了用于5G设备辐射测量的黄金标准测试解决方案

罗德与施瓦茨展示了用于5G设备辐射测量的黄金标准测试解决方案

罗德与施瓦茨展示了一种创新的测试系统,该系统使用紧缩场(CATR)对在20 GHz至87 GHz范围内的5G毫米波设备上进行辐射测量。新解决方案将为5G RF工程师提供巨大优势,显著加快5G毫米波蜂窝设备的上市时间。 ......

关键字:罗德与施瓦茨 5G设备 辐射测量

[智能硬件] 赛普拉斯推出超低功耗数据记录解决方案,用于便携式医疗设备、可穿戴与物联网设备

赛普拉斯推出超低功耗数据记录解决方案,用于便携式医疗设备、可穿戴与物联网设备

赛普拉斯半导体公司日前宣布,推出超低功耗非易失性数据记录解决方案。最新一代的便携式医疗设备、可穿戴设备及其他物联网(IoT)应用要求非易失性存储器能够记录持续累积的用户和传感器数据,并且将功耗降到最低,因此该解决方案成为了最理想选择。......

关键字:赛普拉斯 超低功耗数据记录解决方案 便携式医疗设备 可穿戴

[智能硬件] 开疆拓土的互联设备市场

开疆拓土的互联设备市场

美国新创科技公司Tile(智能追踪设备Tile发明者)CEO兼联合创始人Mike Farley表示:“无线解决方案中,‘低功耗蓝牙’能让你够构建出一件只用一颗小型纽扣电池就能运行一整年的产品,并且是唯一能满足手机的无线解决方案。” ......

关键字:智能追踪设备 低功耗蓝牙通信 无线音频

[通信技术] 为可穿戴设备锦上添花!看三大运营商的eSIM业务进展如何了?

为可穿戴设备锦上添花!看三大运营商的eSIM业务进展如何了?

据悉,在10月31日,中国电信就宣布开通eSIM服务了,首批试点的城市有四个,分别是,上海、广州、成都及南京,仅限当地手机账号开通使用。而中国联通是国内最早开通eSIM服务的运营商。其早在今年初就在上海、天津、广州、深圳、郑州、长沙和武汉7......

关键字:可穿戴设备 三大运营商 eSIM

我 要 评 论

网友评论

芯闻号

热门文章

技术子站

更多

项目外包

更多

推荐博客