【VC++ MFC】MFC的CDC类 以及DC、CClientDC、CWindowDC、CPaintDC

DC(Device Context),设备上下文或者设备环境。 

    应用程序的输出面向设备环境(Device Context,DC),是一个虚拟逻辑设备,也称设备描述表或设备上下文。设备环境DC 是由GDI 创建,用来代表设备连接的数据结构。

 (Windows提供了一个称为图形设备接口 GDI,用户通过调用GDI 函数与设备打交道,避免了用户对硬件直接进行操作)1、作画之前需要准备好画布、画笔、调色板等。当使用GDI函数如MoveToEx/LineTo, TextOut时,只是告诉系统要划线或写字了,但用什么样的笔(HPEN),字是什么颜色(SetTextColor),画在哪张“纸”(HBITMAP)上,需要从一个由系统定义的数据结构中去读取,这个数据结构被称为Device Context(DC)。 换句话说,GDI函数只是绘画的动作,而DC则保存了绘画所需的材料和工具。


2、设备环境函数(Device Context) 设备环境是一个结构,它定义了一系列图形对象及其相关的属性,以及会影响输出结果的绘图方式。这些图形对象包括:画笔(用于画直线),笔刷(用于绘图和填充),位图(用于屏幕的拷贝或滚动),调色板(用于定义可用的颜色集),剪裁区(用于剪裁和其他操作),路径(用于绘图和画图操作)。设备环境函数用于对设备环境进行创建、删除或获取信息。问:DC,CDC,HDC,CClientDC....有什么本质的区别?
答:
都是DC嘛,HDC就是最原始的 DC 句柄,很多API的第一个参数就是一个HDC类型,比如
HDC hDC = ::GetDC( m_hWnd);
::MoveToEx( hDC, 0, 0, NULL );
::LineTo( hDC, 0, 100, );
::ReleaseDC( m_hWnd, hDC );
在MFC中,为了将API封装成一个类来操作,因此多出来了一个CDC。所以在MFC中,都是
CDC dc = GetDC();
dc.MoveTo( 0, 0 );
dc.LineTo( 0, 100 );
this->ReleaseDC( &dc );
但这样还不够,因为 CDC还要你自己去释放,所有MFC中又多出来一个CClientDC,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值