GDI编程 之二、设备描述表DC
来源:互联网 发布:淘宝如何出售虚拟物品 编辑:程序博客网 时间:2024/05/17 08:30
二、设备描述表DC
Win32下获取DC的API函数有:
HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint):特定用于WM_PAINT消息
HDC GetDC(HWND hWnd):用于获得hWnd参数所指定窗口的客户区域的HDC。
HDC GetWindowDC(HWND hWnd):返回hWnd参数所指定的窗口的HDC,包括非客户区,如标题栏、菜单、滚动条,以及边框等。hWnd为NULL时,获取整个屏幕的HDC。
MFC对上述HDC对象和Win32函数进行了封装,基类为CDC类。CDC类包含了各种Win32 HDC的全部功能。在MFC下,使用CDC的成员函数进行图形绘制和文字输出。
CDC类有两个成员变量:m_hDC,m_hAttribDC,它们都是Windows设备描述表句柄。CDC的成员函数作输出操作时,使用m_Hdc;要获取设备描述表的属性时,使用m_hAttribDC。在创建一个CDC类实例时,缺省的m_hDC等于m_hAttribDC。
CDC在封装Win32函数SelectObject(HDC hdc,HGDIOBJECT hgdiobject)时,采用了重载技术,即它针对不同的GDI对象,提供了如下名同而参数不同的成员函数:
SelectObject(CPen *pen) //用于选入笔
SelectObject(CBitmap* pBitmap) //用于选入位图
SelectObject(CRgn *pRgn) //用于选入剪裁区域
SelectObject(CBrush *pBrush) //用于选入刷子
SelectObject(CFont *pFont) //用于选入字体
SelectPalette(CPalette *pPalette,BOOL bForceBackground ) //选入调色板到DC
RealizePalletter() //实现逻辑调色板到物理调色板的映射
直接使用CDC的例子是内存设备上下文,例如:
CDC dcMem.CreateCompatibleDC(&dc); //创建设备描述表
CDC pbmOld = dcMem.SelectObject(&m_bmBall); //更改设备描述表属性
//作一些绘制操作
dcMem.SelectObject(pbmOld); //恢复设备描述表的属性
dcMem.DeleteDC(); //可以不调用,而让析构函数去删除设备描述表
从CDC 派生出四个功能更具体的DC类。继承层次如下图所示:
下面分别讨论这四种设备描述表。
l CCientDC:代表窗口客户区的设备描述表。其构造函数CClientDC(CWnd *pWin)通过::GetDC获取指定窗口的客户区的设备描述表HDC,并且使用成员函数Attach把它和CClientDC对象捆绑在一起;其析构函数使用成员函数Detach把设备描述表句柄HDC分离出来,并调用::ReleaseDC释放设备描述表HDC。
l CPaintDC:仅仅用于响应WM_PAINT消息时绘制窗口,因为它的构造函数调用了::BeginPaint获取设备描述表HDC,并且使用成员函数Attach把它和CPaintDC对象捆绑在一起;析构函数使用成员函数Detach把设备描述表句柄HDC分离出来,并调用::EndPaint释放设备描述表HDC,而::BeginPaint和::EndPaint仅仅在响应WM_PAINT时使用。
例如,MFC中CView对WM_PAINT消息的实现方法如下:
void CView::OnPaint()
{
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
l CMetaFileDC:用于生成元文件。
l CWindowDC:代表整个窗口区(包括非客户区)的设备描述表。其构造函数CWindowDC(CWnd *pWin)通过::GetWindowDC获取指定窗口的客户区的设备描述表HDC,并使用Attach把它和CWindowDC对象捆绑在一起;其析构函数使用Detach把设备描述表HDC分离出来,调用::ReleaseDC释放设备描述表HDC。
- GDI编程 之二、设备描述表DC
- 图形设备接口(GDI)与设备描述表(DC)
- 图形设备接口(GDI)与设备描述表(DC)
- 设备描述表(DC)
- 设备描述表DC
- 设备描述表(DC)
- DC设备描述符表
- MFC之设备描述表DC、画笔Pen、画刷Brush
- 设备上下文DC(又称设备描述表)
- DC---DeviceContext 中文翻译为设备上下文或者设备描述表
- GDI(图形设备接口)编程(二)TextOut
- 关于设备描述表(DC)的详解
- Windows GDI编程之设备环境
- DC设备上下文的举例描述
- Windows 中GDI、设备描述表和位图
- GDI编程 之三、使用DC进行绘图的基本过程
- 关于设备上下文DC和GDI的理解
- GDI+学习笔记5-设备环境DC的概念
- 学习LUA--零星记录
- Altium Designer图文安装教程
- EasyUi dialog 去除默认关闭
- pelco-d协议数据解析示例
- LeetCode 77 Combinations
- GDI编程 之二、设备描述表DC
- 《创业宣言》
- 面试
- 排序。。。用于排序的线性表
- Hadoop2.4.1 源码编译
- 【iOS】NSArray 数组类(Xcode文档翻译)
- GDI编程 之三、使用DC进行绘图的基本过程
- index range scan
- java基础学习