设备描述表培训课程.pptxVIP

  • 0
  • 0
  • 约2.67万字
  • 约 92页
  • 2021-07-02 发布于北京
  • 举报
第4章 设备描述表4.1 设备描述表概述4.2 映射模式4.3 GDI对象4.4 设备描述表属性4.1 设备描述表设备描述表(Device Context)一种Windows数据结构,用来描述绘制窗口所需要的信息。它定义了坐标映射模式、一组GDI图形对象及其属性。GDI对象画线的笔,绘图填图的刷子,位图,调色板,剪裁区域,及路径(Path)。设备描述表分类名称特点Display显示设备描述表,提供对视频显示设备上的绘制操作的支持Printer打印设备描述表,提供对打印机、绘图仪设备上的绘制操作的支持Memory内存设备描述表,提供对位图操作的支持Information信息设备描述表,提供对操作设备信息获取的支持设备描述表属性属性缺省值Pen画笔,BLACK_PENBrush画刷,WHITE_BRUSHBitmap位图Font字体,SYSTEM_FONTPalette调色板,DEFAULT_PALETTEClipping region裁剪区域Mapping mode映射模式,MM_TEXTPolygon-fill mode多边形填充模式,ALTERNATEBackground mode背景模式Drawing mode绘制模式,R2_COPYPENStretch mode延伸模式,BLACKONWHITEBackground color背景颜色Device origin设备原点Current pen position画笔原点Brush origin画刷原点Intercharacter spacing字符间隔,0Text color字体颜色,setting from Control PanelViewport extent视口比例 ,(1,1)Viewport origin视口原点,(0,0)Window extent窗口比例,(1,1)Window origin窗口原点,(0,0)4.1.1 设备描述表的使用步骤设备描述表的使用步骤:获取或者创建设备描述表;必要的话,改变设备描述表的属性;使用设备描述表完成绘制操作;释放或删除设备描述表。获取和释放设备描述表 1 WM_PAINT消息( CWnd类OnPaint函数)CPaintDC dc(this);hdc = BeginPaint (hwnd, ps) ; /EndPaint (hwnd, ps) ; 2 非WM_PAINT消息时(CWnd类CView类其它函数)hdc = GetDC (hwnd) ; /ReleaseDC (hwnd, hdc) ; 3 整个窗口 hdc = GetWindowDC (hwnd) ;/ReleaseDC (hwnd, hdc) ; 4 取得设备上下文 句柄通用函数: hdc = CreateDC (pszDriver, pszDevice, pszOutput, pData) ; /DeleteDC (hdc) ;如取整个屏幕的设备上下文 句柄:hdc = CreateDC (TEXT (“DISPLAY”), NULL, NULL, NULL) ; 5 取得内存设备上下文 : hdcMem = CreateCompatibleDC (hdc) ; DeleteDC (hdcMem) ; 设置设备描述表的属性设备描述表属性的表示复杂GDI对象:如画笔、画刷、位图、调色板等。简单MFC类对象:如裁剪区域,原点。简单变量:字体颜色、背景颜色等。一组符号常量:如各种模式,绘制模式,背景模式和填充模式等。设置设备描述表属性的方式选入选出方式:在处理事件期间选入,事件处理完毕后选出。状态机方式:按需要随时设置。设置设备描述表的属性设备描述表属性的保持问题通常情况下,在一个事件函数中设置的设备描述表属性通常不能保存到下一个消息函数,所以对于每一个消息函数,都应该在使用设备描述表之前都要重新进行设置。但windows提供了保持设备描述表属性的机制设备描述表的保持机制设备描述表的保持机制自动保存:每次设置的属性均保存在windows设备描述表中。 创建窗口时(WM_CREATE消息),设置CS_OWNDC风格。动态管理机制:使用下列一组API函数管理设备描述表属性。保存/恢复设备上下文。idSaved = SaveDC (hdc) ; 改变一些属性 ;RestoreDC (hdc, idSaved) ; 以堆栈方式使用SaveDC和RestoreDCSaveDC (hdc) ; RestoreDC (hdc, -1) ; 或使用CDC类成员函数管理设备描述表属性。保存/恢复设备上下文。idSaved = SaveDC () ; 改变一些属性 ;RestoreDC ( idSaved) ; 以堆栈方式使用SaveDC和RestoreDCSaveDC () ;

文档评论(0)

1亿VIP精品文档

相关文档