首页 > 应用 > 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

换一批

延伸阅读

[智能硬件] 高通宣布,9月10日有个重大消息

高通宣布,9月10日有个重大消息

这或许暗示高通将发布新款可穿戴设备芯片,并且在功耗方面会得以改善,续航时间有望提升。海报上显示的天气信息,或许还跟新款芯片支持数据网络连接有关。 ......

关键字:高通 可穿戴设备芯片

[智能硬件] Q2全球可穿戴设备销量同比增5.5%,苹果小米分居冠亚!

Q2全球可穿戴设备销量同比增5.5%,苹果小米分居冠亚!

苹果保持了其在可穿戴产品市场领先的地位,LTE(即第四代移动网络)版智能手表的市场持续增长,成为全球许多电信频道的补充,大受欢迎。苹果公司已经发布了watchOS 5,也已经开始设定潜在的更换周期,因为最新版本的苹果智能手表平台只能与系列1......

关键字:可穿戴设备 苹果 小米

[EDA] 贴装工艺与设备

贴装工艺与设备

表面组装技术是以工艺为中心的制造技术。产品种类、功能、性能和品质要求决定工艺,工艺决定设备。不同产品设计要求采用相应的工艺,而不同工艺要求相应的设备。(1)贴装工艺与设备,如同计算机软件与硬件一样密不可......

关键字:工艺 设备

[通信技术] 受禁令影响:中兴上半年净亏损严重 Q3利润预计转正

受禁令影响:中兴上半年净亏损严重 Q3利润预计转正

8月30日晚间,中兴通讯公布了2018年上半年财报。报告显示,公司上半年实现营收394.34亿元,同比下降26.99%;净亏损78.24亿元,去年同期为盈利22.93亿元。报告显示,上半年业绩出现严重亏损,是根据和解协议缴纳的10亿......

关键字:中兴 5G 通信设备商

[单片机应用] 51单片机中XTYBE的使用及外围设备扩展地址编址的方法

51单片机中XTYBE的使用及外围设备扩展地址编址的方法

XTYBE说法一:2楼:ABSACC.h,XBYTE的定义是这样的,#define XBYTE ((unsigned char volatile xdata *) 0),XBYTE就相当于一个指向外部数据区的无符号字符型变量的指针(的名称,......

关键字:51单片机 XTYBE 外围设备扩展 地址编址

[工业控制] 科莱恩在台湾国际半导体展上推出用于表面贴装设备干式包装的Humitector 2型不可逆湿度指示卡

科莱恩在台湾国际半导体展上推出用于表面贴装设备干式包装的Humitector 2型不可逆湿度指示卡

科莱恩公司在台湾国际半导体展(Semicon,I-2823展台)上推出了业界首款用于干式包装的Humitector 2型不可逆湿度指示卡,为远东地区表面贴装供应商和元件制造商带来了全新水平的防潮保护解决方案。 ......

关键字:表面贴装设备 科莱恩 湿度指示卡

[工业控制] ZESTRON® EYE Mobile–ZESTRON新产品发布

ZESTRON® EYE Mobile–ZESTRON新产品发布

ZESTRON将于8月28日至30日在2018年NEPCON华南国际电子生产设备展(深圳会展中心1号馆1N10展台)为您展示全球首发ZESTRON® EYE Mobile便携式数字浓度监测仪及多款国内外领先清洗设备。 ......

关键字:ZESTRON 数字浓度监测仪 清洗设备

[消费类电子新闻] 华为将在美国推出太阳能板控制设备,加征25%关税降低产品价格优势

华为将在美国推出太阳能板控制设备,加征25%关税降低产品价格优势

中美贸易战对企业开始产生实际的影响了,华为这款太能能控制设备,原本价格还是很有优势的,但美国加征25%的税之后,产品优势就不明显了。 ......

关键字:华为 太阳能控制设备 智能能源控制器

[单片机应用] STM32F4学习笔记8——NIVC向量中断

STM32F4学习笔记8——NIVC向量中断

Cortex—M4内核支持128级中断嵌套,他有一个8位寄存器,用户可以通过这个寄存器设置中断优先级,但考虑到现在有些芯片不可能有这么多中断源,且支持这么多级中断嵌套堆栈也吃不消,大部分厂家都根据自己生产的芯片做......

关键字:STM32F4 NIVC 向量中断

[趣科技] 让普通物体秒变智能!加州大学展示一款基于 WiFi的便携贴产品

让普通物体秒变智能!加州大学展示一款基于 WiFi的便携贴产品

“智能”联网设备可以让日常生活变得更加轻松,但它们通常需要搭配电池来使用。好消息是,加州大学圣迭戈分校的研究团队,刚刚展示了一款基于 WiFi、名叫 LiveTag 的解决方案。其采用低成本的标签打印方......

关键字:智能设备 WIFI

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客