1、CDC类详解CDCCObjectCDCCDC类定义得就是设备上下文对象得类。CDC对象提供处理显示器或打印机等设备上下文得成员函数,以及处理与窗口客户区对应得显示上下文得成员。通过CDC对象得成员函数进行所有得绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色与调色板。它还为获取与设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆与多边形等形状提供了成员函数。另外还为绘制文本、处理字体,使用打印机跳转,滚动与播放元文件提供成员函数。使用CDC对象时要构造它,然后调用与它平等得、使用设备上下文得Windo
2、ws函数得成员函数。注意:Windows 95下所有屏幕坐标限制在16位以内。因此向CDC成员函数传递得int必须在-32768至32767之间。为了特定用途,Microsoft基本类库提供了几个CDC派生类。CPaintDC包括BeginPaint与EndPaint调用。CClientDC管理窗口用户区对应得显示上下文。CWindowDC管理与整个窗口对应得显示上下文,包括它得结构与控件。CMetaFileDC与带元文件得设备上下文对应。CDC包含m_hDC与m_hAttribDC两个设备上下文,它们在CDC对象创建时参考同一个设备。CDC指导所有对m_hDC得输出GDI调用以及对m_hAt
3、tribDC得大部分属性GDI调用(GetTextColor就是属性调用得例子,而SetTextColor就是一个输出调用)。例如框架使用这两个设备上下文实现CMetaFileDC对象,在从物理设备读取属性期间向元文件发送输出。打印预览以相同风格在框架中实现。还可以以相似方法在特殊应用代码中使用这两个设备上下文。可能多次需要来自m_hDC与m_hAttribDC设备上下文得文本度量信息。以下几对函数提供了这项功能:jwZwNFY。l8SuPrF。NGAzWSc。使用m_hAttribDC使用m_hDCGetTextExtentGetOutputTextExtentGetTabbedTextEx
4、tentGetOutputTabbedTextExtentGetTextMetricsGetOutputTextMetricsGetCharWidthGetOutputCharWidthCDC类成员数据成员m_hDCCDC对象使用得输出设备上下文m_hAttribDCCDC对象使用得输出属性上下文构造函数CDC构造一个CDC对象初始化CreateDC为指定设备创建设备上下文CreateIC为指定设备创建信息上下文。这提供了一种不创建设备上下文即获取有关设备信息得快速方式CreatepatibleDC创建内存设备上下文,与另一个设备上下文匹配。可以用它在内存中准备图像DeleteDC删除CDC对
5、象对应得Windows设备上下文FromHandle给定设备上下文句柄时,返回指向CDC对象得指针。如果CDC对象未附加到句柄,则创建并附加一个临时CDC对象DeleteTempMap由CWinApp空闲时间句柄调用,删除FromHandle创建得临时CDC对象。同时分离设备上下文Attach把Windows设备上下文附加到这个CDC对象Detach从CDC对象分离Windows设备上下文、SetAttribDC设置属性设备上下文m_hAttribDCSetOutputDC设置输出设备上下文m_hDCReleaseAttribDC释放属性设备上下文m_hAttribDCReleaseOutpu
6、tDC释放输出设备上下文m_hDCGetCurrentBitmap返回指向当前选择得CBitmap对象得指针GetCurrentBrush返回指向当前选择得CBrush对象得指针GetCurrentFont返回指向当前选择得CFont对象得指针GetCurrentPalette返回指向当前选择得CPalette对象得指针GetCurrentPen返回指向当前选择得CPen对象得指针GetWindow返回显示设备上下文对应得窗口设备上下文函数GetSafeHdc返回输出设备上下文m_hDCSaveDC保存设备上下文当前状态RestoreDC恢复SaveDC保存得设备上下文以前状态ResetDC更
7、新m_hAttribDC设备上下文GetDeviceCaps获取有关给定显示设备功能得指定类型指定设备信息IsPrinting确定正在使用得设备上下文就是否用于打印安全型选择帮助器GetBrushOrg获取当前画刷得起点SetBrushOrg指定选入设备上下文得下一个画刷得起点EnumObjects枚举设备上下文中有效得笔与画刷颜色与颜色调色板函数SelectObject选择笔等GDI绘图对象SelectStockObject选择Windows提供得预定义得一个笔、画刷或字体绘图工具函数GetNearestColor获取与给定设备能显示得指定逻辑颜色最接近得逻辑色SelectPalette选择
8、逻辑调色板RealizePalette把当前逻辑调色板中得调色板入口映射到系统调色板UpdateColors通过客户区当前颜色在像素基础上与系统调色板得匹配,更新设备上下文得客户区GetHalftoneBrush获取半色调画刷绘图属性函数GetBkColor获取当前背景色SetBkColor设置当前背景色GetBkMode获取背景模式SetBkMode设置背景模式GetPolyFillMode获取当前多边形填充模式SetPolyFillMode设置多边形填充模式GetROP2获取当前绘图模式SetROP2设置当前绘图模式GetStretchBltMode获取当前位图拉伸模式SetStretch
9、BltMode设置位图拉伸模式GetTextColor获取当前文本颜色SetTextColor设置文本颜色GetColorAdjustment获取用于设备上下文得颜色调整值SetColorAdjustment使用指定值设置设备上下文得颜色调整值映射函数GetMapMode获取当前映射模式SetMapMode设置当前映射模式GetViewportOrg获取视区起点得X与Y坐标SetViewportOrg设置视区起点OffsetViewportOrg相对于当前视区起点坐标修改视区起点GetViewportExt获取视区X与Y范围SetViewportExt设置视区X与Y范围ScaleViewpor
10、tExt相对于当前值修改视区范围GetWindowOrg获取参应窗口起点得X与Y坐标SetWindowOrg设置设备上下文得窗口起点OffsetWindowOrg相对于当前窗口起点得坐标修改窗口起点GetWindowExt获取对应窗口得X与Y坐标SetWindowExt设置对应窗口得X与Y坐标ScaleWindowExt相对于当前值修改窗口范围坐标函数DPtoHIMETRIC设备单位转换为HIMETRIC单位LPtoHIMETRIC逻辑单位转换为HIMETRIC单位DPtoLP设备单位转换为逻辑单位LPtoDP逻辑单位转换为设备单位HIMETRICtoDPHIMETRIC单位转换为设备单位HI
11、METRICtoLPHIMETRIC单位转换为逻辑单位区域函数FillRgn用指定画刷填充指定区域FrameRgn用画刷在指定区域周围绘制边线InvertRgn反转区域中得颜色PaintRgn用选取得画刷填充区域剪切函数SetBoundsRect控制指定设备上下文绑定得矩形信息得累计GetBoundsRect返回到设备上下文当前累计得绑定矩形GetClipBox获取当前剪切边界周围最紧绑定矩形得维数SelectClipRgn使用指定模式合并给定区域与当前剪切区域ExcludeClipRect创建包含现有剪切区域减掉指定矩形得一个新剪切区域ExcludeUpdateRgn通过从剪切区域排除窗口中
12、得更新区域,防止在窗口得无效区域中绘图IntersectClipRect通过构成当前区域与矩形得交集创建一个新得剪切区域OffsetClipRgn移动给定设备得剪切区域PtVisible确定给定点就是否在剪切区域内RectVisible确定给定矩形得任何部分就是否在剪切区域内线输出函数GetCurrentPosition获取笔得当前位置(以逻辑坐标表示)MoveTo移动当前位置LineTo从当前位置到一点画直线,但不包括那个点Arc画一段椭圆弧ArcTo画一段椭圆弧。除了更新当前位置以外,这个函数与Arc类似AngleArc画一条线段与圆弧,把当前位置移到圆弧终点GetArcDirection
13、对设备上下文返回当前圆弧方向SetArcDirection设备圆弧与矩形函数要用到得绘图方向PolyDraw画一组线段与Bezier样条。这个函数更新当前位置Polyline画一组与指定点连接得线段PolyPolyline画多组相连线段。这个函数不使用也不更新当前位置PolylineTo画一条或多条直线,并把当前位置移到最后一条直线得终点PolyBezier画一条或多条Bezier样条。不使用也不更新当前位置PolyBezierTo画一条或多条Bezier样条,并把当前位置移到最后一条Bezier样条得终点简单绘图函数FillRect用指定画刷填充给定矩形FrameRect在矩形周围绘制边界I
14、nvertRect反转矩形内容DrawIcon绘制图标DrawDragRect拖拽矩形时擦除并重绘它FillSolidRect用实颜色填充矩形Draw3Drect绘制三维矩形DrawEdge绘制矩形边DrawFrameControl绘制帧控件DrawState显示图像并应用可视化效果来表示一个状态椭圆与多边形函数Chord绘制椭圆弧(椭圆与一条线段相交围成得闭合图形)DrawFocusRect绘制用于表示焦点得风格得矩形Ellipse绘制椭圆Pie绘制饼形图Polygon绘制多边形,包含由线段连接得一个或多个点(顶点)PolyPolygon创建使用当前多边形填充模式得两个或多个多边形,多边形可
15、以相互分开或叠加Polyline绘制多边形,包含连接指定点得一组线段Rectangle使用当前笔绘制矩形,用当前画刷填充RoundRect使用当前笔绘制圆角矩形,用当前画刷填充位图函数PatBlt创建位特征BitBlt从指定设备上下文拷贝位图StretchBlt把位图由源矩形与设备移动到目标矩形,必要时拉伸或压缩位图以适合目标矩形得维数GetPixel获取指定点像素得RGB颜色值SetPixel设置指定点像素为最接近指定色得近似值SetPixelV设置指定点坐标为最接近指定色得近似值。SetPixelV比SetPixel快,原因就是它不用返回实际绘制点得颜色值FloodFill用当前画刷填充区
16、域ExtFloodFill用当前画刷填充区域。比FloodFill成员函数提供更多灵活性MaskBlt使用给定屏蔽与光栅操作对源与目标位图合并颜色数据PlgBlt从源设备上下文得指定矩形到给定设备上下文中指定平行多边形,执行颜色数据位得位块传递文本函数TextOut用当前选取字体在指定位置写字符串ExtTextOut用当前选取字体在矩形区域写字符串TabbedTextOut在指定位置写字符串,制表符扩展为制表符停止位置数组中指定值DrawText在指定矩形内绘制格式化文本GetTextExtent使用当前字体在属性设备上下文上计算文本行得宽度与高度,确定维数GetOutputTextExten
17、t使用当前字体在输出设备上下文上计算文本行得宽度与高度,确定维数GetTabbedTextExtent使用当前字体在属性设备上下文上计算字符串得宽度与高度GetOutputTabbedTextExtent使用当前字体在输出设备上下文上计算字符串得宽度与高度GrayString在给定位置绘制暗(灰色)文本GetTextAlign获取文本对齐标记SetTextAlign设置文本对齐标记GetTextFace以空终止字符串形式把当前字体字样名拷贝到缓冲区GetTextMetrics从属性设备上下文为当前字体获取度量GetOutputTextMetrics从输出设备上下文为当前字体获取度量SetTex
18、tJustification把空格添加到字符串得中断字符GetTextCharacterExtra对字符间空格数量获取当前设置SetTextCharacterExtra设置字符间空格数量字体函数GetFontData从比例字体文件获取字体度量信息。获取得信息通过指定字体文件与返回信息长度得偏移量标识GetKerningPairs获取指定设备上下文中当前选取得字体字符实对GetOutlineTextMetrics获取用于TrueType字体得字体度量信息GetGlyphOutline获取用于当前字体中外线字符串得外线曲线或位图GetCharABCWidths从当前字体获取给定范围相继字符以逻辑单
19、位计数得宽度GetCharWidth从当前字体获取给定范围相继字符得分数宽度GetOutputCharWidth从使用输出设备上下文得当前字体获取相继字符组中各个字符得宽度SetMapperFlags改变字体映射表在从逻辑字体到物理字符映射时使用得算法GetAspectRatioFilter获取当前长宽比过滤器得设置打印机跳离函数QueryAbort对打印应用调用AbortPro回滚函数,询问打印就是否应终止Escape允许应用访问不能通过GDI直接使用得特殊设备得功能。同时允许访问Windows跳离函数。应用调用得Escape调用经翻译传送到设备驱动程序DrawEscape访问通过图形设备接
20、口(GDI)不能直接使用得视频显示器得绘图功能StartDoc通告设备驱动程序开始一项新打印作业StartPage通告设备驱动程序开始新页EndPage通告设备驱动程序页结束SetAbortProc如果打印作业必须终止,设置Windows调用得由程序员提供得回滚函数AbortDoc终止当前打印任务,擦除自上次调用StartDoc成员函数以来应用写入设备得任何内容EndDoc结束由StartDoc成员函数启动得打印作业滚动函数ScrollDC水平与垂直滚动位矩形元文件函数PlayMetaFile在给定设备上播放指定元文件类型。增强版本得PlayMetaFile显示以增强格式元文件保存得图片。元文
21、件可以播放任意次数AddMeta从缓冲区把注释拷贝到指定增强格式元文件路径函数AbortPath关闭并拒绝设备上下文中任何路径BeginPath打开设备上下文中一个路径括号CloseFigure关闭路径中一个打开得图表EndPath关闭一个路径括号,并把括号定义得路径选择到设备上下文FillPath关闭当前路径中任何打开得图表,并用当前画刷与多边形填充模式填充路径内部FlattenPath变形选取到当前设备上下文路径中得任何曲线,把曲线变成一系列直线GetMiterLimit返回用于设备上下文得限制GetPath获取定义直线端点与从选择到设备上下文路径中找到得曲线控制点得坐标SelectCli
22、pPath对设备上下文选择当前路径作为剪切区域,通过使用指定模式合并新区域与任何现有剪切区域SetMiterLimit设备用于设备上下文得连接长度限制StrokeAndFillPath关闭路径中任何打开得图表,使用当前笔点路径外线,使用当前画刷填充它内部StrokePath使用当前笔描绘指定路径WidenPath如果路径使用过了当前选取到设备上下文中得笔点,重新定义当前路径为要画得区域 *CClientDC子类 1、 CClientDC类只能在客户区绘图; 2、 所谓客户区指窗口区域中去掉边框、标题栏、菜单栏、工具栏、状态栏等之外得部分,它就是用户可以操作得区域; 3、 在使用CClientD
23、C进行绘图时,一般要调用GetClientRect()函数来获取客户区域得大小; 4、 CClientDC类在构造函数中调用Windows API函数GetDC(),在析构时响应ReleaseDC(); 5、 CClientDC类得窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。 *CWindowDC子类 1、 CWindowDC对象在构造时调用Windows API函数GetWindowDC,在析构时调用相应得API函数ReleaseDC,这意味着CWindowDC对象可访问CWnd所指向得为整个全屏幕区域; 2、 CWindowDC允许在显
24、示器得任意位置绘图。坐标原点在整个窗口得左上角。 3、 在使用CWindowDC进行绘图时,一般要调用GetWindowRect函数来获取整个应用程序窗口区域得大小; 4、 CWindowDC类得窗口句柄保存在成员变量m_hWnd,为构造CClientDC,需将CWnd作为参数传递给构造函数。 *CPaintDC子类 1、 通常CPaintDC用来响应WM_PAINT消息。一般应用在OnPaint函数、 2、 CClientDC也就是从CDC派生出来得、构造时自动调用GetDC函数,析构时自动调用ReleaseDC函数、一般应用于客户区窗口得绘制、 3、 CPaintDC只能在WM_PAINT
25、消息中使用, 用于有重画消息发出时才使用得内存设备环境, 而CClientDC与客户区相关,有重画消息发出时才使用得内存设备环境, 可在任何地方使用、 4、 在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断得窗口重画。 *CMetaFileDC子类 1、 在应用程序中,有一些图像就是需要经常重复显示得、这样得图形最好事先绘制好形成一个文件,并存储在内存中,当用到它时直接打开就可以了,这种图形文件叫做图元文件; 2、 制作图元文件需要一个特殊得设备描述环境CMetaFileDC类、它也就是由CDC类继承来得,因此它包含了CDC类得所有绘图方法。
26、 3、 一般先在视图类得OnCreate()函数中创建图元文件、具体做法为:先定义一个CMetaFileDC类得对象,然后用该对象得Create()函数创建它,该函数得原型为:BOOL Create(LPCTSTR lpsz); 4、 接下来使用由CDC继承来得绘图方法绘制图元文件,最后使用Close()函数结束绘制并保存该图元文件到类得数据成员中(该数据成员得类型应为HMETAFILE)。 5、 当需要显示该图元文件时,使用CDC类得成员函数PlayMetaFile()。当不再使用该图元文件时,要用函数DeleteMetaFile()将其删除。JjbyNue。HqlnfY8。5qFnHud。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1