第4章 设备描述表_第1页
第4章 设备描述表_第2页
第4章 设备描述表_第3页
第4章 设备描述表_第4页
第4章 设备描述表_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4章章 设备描述表设备描述表4.1 设备描述表概述设备描述表概述4.2 映射模式映射模式4.3 GDI对象对象4.4 设备描述表属性设备描述表属性4.1 设备描述表设备描述表 设备描述表设备描述表(Device Context) 一种一种Windows数据结构,用来描述绘制窗口所需要的数据结构,用来描述绘制窗口所需要的信息。信息。 它定义了它定义了坐标映射模式坐标映射模式、一组、一组GDI图形对象图形对象及其及其属性属性。 GDI对象对象 画线的画线的笔笔,绘图填图的,绘图填图的刷子刷子,位图位图,调色板调色板,剪裁剪裁区域区域,及,及路径路径(Path)。设备描述表分类设备描述表分类名称

2、名称特点特点Display显示设备描述表,提供对视频显示设备上显示设备描述表,提供对视频显示设备上的绘制操作的支持的绘制操作的支持Printer打印设备描述表,提供对打印机、绘图仪打印设备描述表,提供对打印机、绘图仪设备上的绘制操作的支持设备上的绘制操作的支持Memory内存设备描述表,提供对位图操作的支持内存设备描述表,提供对位图操作的支持Information信息设备描述表,提供对操作设备信息获信息设备描述表,提供对操作设备信息获取的支持取的支持设设备备描描述述表表属属性性属性属性缺省值缺省值Pen画笔,画笔,BLACK_PENBrush画刷,画刷,WHITE_BRUSHBitmap位图位

3、图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

4、画笔原点画笔原点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 设备描述表的使用步骤设备描述表的使用步骤设备描述表的使用步骤:设备描述表的使用步骤:获取获取或者或者创建创建设备描述表;设备描述表;必要的话,

5、改变设备描述表的属性;必要的话,改变设备描述表的属性;使用设备描述表完成绘制操作;使用设备描述表完成绘制操作;释放或删除设备描述表。释放或删除设备描述表。获取和释放设备描述表获取和释放设备描述表 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

6、) ; 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 = CreateComp

7、atibleDC (hdc) ; DeleteDC (hdcMem) ; 设置设备描述表的属性设置设备描述表的属性设备描述表属性的表示设备描述表属性的表示复杂复杂GDI对象:如画笔、画刷、位图、调色板等。对象:如画笔、画刷、位图、调色板等。简单简单MFC类对象:如裁剪区域,原点。类对象:如裁剪区域,原点。简单变量:字体颜色、背景颜色等。简单变量:字体颜色、背景颜色等。一组符号常量:如各种模式,绘制模式,背景模式和填充模式等。一组符号常量:如各种模式,绘制模式,背景模式和填充模式等。设置设备描述表属性的方式设置设备描述表属性的方式选入选出方式:在处理事件期间选入,事件处理完毕后选出。选入选出方式

8、:在处理事件期间选入,事件处理完毕后选出。状态机方式:按需要随时设置。状态机方式:按需要随时设置。设置设备描述表的属性设置设备描述表的属性设备描述表属性的保持问题设备描述表属性的保持问题通常情况下,在一个事件函数中设置的设备描述表属性通常不能保通常情况下,在一个事件函数中设置的设备描述表属性通常不能保存到下一个消息函数,所以对于每一个消息函数,都应该在使用设存到下一个消息函数,所以对于每一个消息函数,都应该在使用设备描述表之前都要重新进行设置。备描述表之前都要重新进行设置。但但windows提供了保持设备描述表属性的机制提供了保持设备描述表属性的机制设备描述表的保持机制设备描述表的保持机制设备

9、描述表的保持机制设备描述表的保持机制自动保存:每次设置的属性均保存在自动保存:每次设置的属性均保存在windows设备描述表中。设备描述表中。创建窗口时创建窗口时(WM_CREATE消息消息),设置,设置CS_OWNDC风格。风格。动态管理机制:动态管理机制:使用下列一组使用下列一组API函数管理设备描述表属性。函数管理设备描述表属性。保存保存/恢复设备上下文。恢复设备上下文。idSaved = SaveDC (hdc) ; 改变一些属性改变一些属性 ;RestoreDC (hdc, idSaved) ; 以堆栈方式使用以堆栈方式使用SaveDC和和RestoreDCSaveDC (hdc)

10、; RestoreDC (hdc, -1) ; 或使用或使用CDC类成员函数管理设备描述表属性。类成员函数管理设备描述表属性。保存保存/恢复设备上下文。恢复设备上下文。idSaved = SaveDC () ; 改变一些属性改变一些属性 ;RestoreDC ( idSaved) ; 以堆栈方式使用以堆栈方式使用SaveDC和和RestoreDCSaveDC () ; RestoreDC (-1) ; 4.1.2 设备描述表的绘图函数设备描述表的绘图函数点点COLORREF GetPixel( int x, int y ) const; COLORREF GetPixel( POINT poi

11、nt ) const;COLORREF SetPixel( int x, int y, COLORREF crColor ); COLORREF SetPixel( POINT point, COLORREF crColor );BOOL SetPixelV( int x, int y, COLORREF crColor ); BOOL SetPixelV( POINT point, COLORREF crColor );直线直线CPoint MoveTo( int x, int y ); CPoint MoveTo( POINT point ); BOOL LineTo(int x,int

12、y);BOOL LineTo( POINT point );弧弧BOOL AngleArc( int x, int y, int nRadius, float fStartAngle, float fSweepAngle );BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 ); BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );BOOL ArcTo( int x1, int y1, int x2, int y2, int x3, int

13、y3, int x4, int y4 );BOOL ArcTo( LPCRECT lpRect, POINT ptStart, POINT ptEnd );int SetArcDirection( int nArcDirection );int GetArcDirection( ) const;4.1.2 设备描述表的绘图函数设备描述表的绘图函数BeZier曲线:曲线:BOOL PolyBezier( const POINT* lpPoints, int nCount );BOOL PolyBezierTo( const POINT* lpPoints, int nCount );BOOL P

14、olyDraw( const POINT* lpPoints, const BYTE* lpTypes, int nCount );BOOL Polyline( LPPOINT lpPoints, int nCount );BOOL PolylineTo( const POINT* lpPoints, int nCount );BOOL PolyPolyline( const POINT* lpPoints, const DWORD* lpPolyPoints, int nCount );位图位图BOOL AlphaBlend( int xDest, int yDest, int nDestW

15、idth, int nDestHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, BLENDFUNCTION blend );BOOL BitBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );BOOL MaskBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, CBitma

16、p& maskBitmap, int xMask, int yMask, DWORD dwRop );BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );BOOL TransparentBlt( int xDest, int yDest, int nDestWidth, int nDestHeight, CDC* pSrcDC, int xSrc, int ySrc, in

17、t nSrcWidth, int nSrcHeight, UINT clrTransparent );patternBOOL PatBlt( int x, int y, int nWidth, int nHeight, DWORDdwRop );4.1.2 设备描述表的绘图函数设备描述表的绘图函数矩形矩形void Draw3dRect( LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight ); void Draw3dRect( int x, int y, int cx, int cy, COLORREF clrTopLeft

18、, COLORREF clrBottomRight );void DrawDragRect( LPCRECT lpRect, SIZE size, LPCRECT lpRectLast, SIZE sizeLast, CBrush* pBrush = NULL, CBrush* pBrushLast = NULL );BOOL DrawEdge( LPRECT lpRect, UINT nEdge, UINT nFlags );void FillRect( LPCRECT lpRect, CBrush* pBrush );void FillSolidRect( LPCRECT lpRect,

19、COLORREF clr );void FrameRect( LPCRECT lpRect, CBrush* pBrush );void InvertRect( LPCRECT lpRect );BOOL Rectangle( int x1, int y1, int x2, int y2 );BOOL Rectangle( LPCRECT lpRect );BOOL RoundRect( LPCRECT lpRect, POINT point );void DrawFocusRect( LPCRECT lpRect );4.1.2 设备描述表的绘图函数设备描述表的绘图函数多边形多边形BOOL

20、Polygon( LPPOINT lpPoints, int nCount ); BOOL PolyPolygon( LPPOINT lpPoints, LPINT lpPolyCounts, int nCount );BOOL Polyline( LPPOINT lpPoints, int nCount );椭圆椭圆BOOL Ellipse( int x1, int y1, int x2, int y2 ); BOOL Ellipse( LPCRECT lpRect );扇形扇形BOOL Chord( int x1, int y1, int x2, int y2, int x3, int y

21、3, int x4, int y4 ); BOOL Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd );BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4 ); BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );4.1.2 设备描述表的绘图函数设备描述表的绘图函数文字文字virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT

22、lpRect, UINT nFormat ); int DrawText( const CString& str, LPRECT lpRect, UINT nFormat ); virtual int DrawTextEx( LPTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat, LPDRAWTEXTPARAMS lpDTParams ); int DrawTextEx( const CString& str, LPRECT lpRect, UINT nFormat, LPDRAWTEXTPARAMS lpDTPa

23、rams );virtual BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths ); BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, const CString& str, LPINT lpDxWidths );4.1.2 设备描述表的绘图函数设备描述表的绘图函数区域:区域:BOOL FillRgn( CRgn* pRgn, CBrush*

24、 pBrush );BOOL FrameRgn( CRgn* pRgn, CBrush* pBrush, int nWidth, int nHeight );BOOL InvertRgn( CRgn* pRgn );BOOL PaintRgn( CRgn* pRgn );BOOL ExtFloodFill( int x, int y, COLORREF crColor, UINT nFillType );BOOL FloodFill( int x, int y, COLORREF crColor );BOOL GradientFill( TRIVERTEX* pVertices, ULONG

25、nVertices, void* pMesh, ULONG nMeshElements, DWORD dwMode );路径路径BOOL BeginPath();BOOL EndPath( );BOOL CloseFigure( );BOOL FillPath( );BOOL FlattenPath( );int GetPath( LPPOINT lpPoints, LPBYTE lpTypes, int nCount) const;BOOL SelectClipPath( int nMode );BOOL StrokeAndFillPath( ); 4.2 映射模式映射模式 映射模式:映射模

26、式: 逻辑坐标和设备坐标的映射方式。逻辑坐标和设备坐标的映射方式。 设备坐标:设备坐标: 设备使用的整数坐标,与设备相关。设备使用的整数坐标,与设备相关。 逻辑坐标:逻辑坐标: GDI函数使用的实数坐标,与设备无关。函数使用的实数坐标,与设备无关。4.2 映射模式映射模式 视口视口(view port) 设备上的一个矩形区域,使用设备坐标。通常和显示区域相同。设备上的一个矩形区域,使用设备坐标。通常和显示区域相同。 实际设备使用的坐标实际设备使用的坐标 视口的指标视口的指标 视口原点视口原点(0,0)和视口范围和视口范围(1,1)和坐标轴方向。和坐标轴方向。 窗口窗口(window) 用户图形

27、用户图形(与现实世界中的实体相对应与现实世界中的实体相对应)使用的矩形区域,使用逻使用的矩形区域,使用逻辑坐标,可以用图素、毫米、英寸或任何其它单位。辑坐标,可以用图素、毫米、英寸或任何其它单位。 GDI绘图函数中使用窗口坐标。绘图函数中使用窗口坐标。 窗口的表示窗口的表示 窗口原点窗口原点(0,0)窗口范围窗口范围(1,1)和坐标轴方向和坐标轴方向4.2.1 坐标变换公式坐标变换公式 4.2.1 坐标变换公式坐标变换公式窗口窗口视口视口4.1.2 映射模式的种类映射模式的种类映像方式映像方式 逻辑单位逻辑单位x值值 y值值 MM_TEXT 图素图素 右右 下下 MM_LOMETRIC 0.1

28、 mm 右右 上上 MM_HIMETRIC 0.01 mm 右右 上上 MM_LOENGLISH 0.01 in. 右右 上上 MM_HIENGLISH 0.001 in. 右右 上上 MM_TWIPS 1/1440 in. 右右 上上 MM_ISOTROPIC 任意任意(x = y) 可选可选可选可选 MM_ANISOTROPIC任意任意(x != y) 可选可选可选可选 MM_TEXT 映像方式映像方式 映像方式映像方式 逻辑单位逻辑单位x值值 y值值 MM_TEXT 图素图素 右右 下下 xy与设备坐标一致与设备坐标一致METRIC和和ENGLISH映像方式映像方式 映像方式映像方式 逻

29、辑单位逻辑单位x值值 y值值 MM_TWIPS 1/1440 in. 右右 上上 MM_LOMETRIC 0.1 mm 右右 上上 MM_HIMETRIC 0.01 mm 右右 上上MM_LOENGLISH 0.01 in. 右右 上上 MM_HIENGLISH 0.001 in. 右右 上上 xyISOTROPIC映像方式映像方式 映像方式映像方式 逻辑单位逻辑单位x值值 y值值 MM_ISOTROPIC 任意任意(x = y) 可选可选可选可选 MM_ANISOTROPIC 任意任意(x != y) 可选可选可选可选 xyISOTROPIC映像方式映像方式 MM_ISOTROPIC MM_

30、ANISOTROPIC 逻辑单位被转换成轴逻辑单位被转换成轴(非非)等距的任意单位等距的任意单位; 可以使用可以使用SetWindowExt 和和 SetViewportExt 指定希望的指定希望的单位和方向单位和方向. GDI会做必要的调整以保证会做必要的调整以保证x轴和轴和y轴方向上的等距。轴方向上的等距。4.1.3 关于映射模式的相关操作关于映射模式的相关操作 映射模式:映射模式: virtual int SetMapMode(int nMapMode); int GetMapMode( ) const; 视口比例视口比例 CSize GetViewportExt( ) const; v

31、irtual CSize SetViewportExt( int cx, int cy ); virtual CSize SetViewportExt( SIZE size ); virtual CSize ScaleWindowExt( int xNum, int xDenom, int yNum, int yDenom ); 视口原点视口原点 virtual CPoint SetViewportOrg( int x, int y ); CPoint SetViewportOrg( POINT point ); CPoint GetViewportOrg( ) const; virtual

32、CPoint OffsetViewportOrg( int nWidth, int nHeight );4.1.3 关于映射模式的相关操作关于映射模式的相关操作 窗口比例窗口比例 CSize GetWindowExt(); virtual CSize SetWindowExt( int cx, int cy ); virtual CSize SetWindowExt( SIZE size ); virtual CSize ScaleWindowExt( int xNum, int xDenom, int yNum, int yDenom ); 窗口原点窗口原点 CPoint SetWindow

33、Org( int x, int y ); CPoint SetWindowOrg( POINT point ); CPoint GetWindowOrg( ) const; CPoint OffsetWindowOrg( int nWidth, int nHeight );4.1.3 关于映射模式的相关操作关于映射模式的相关操作 设备坐标与逻辑坐标的转换设备坐标与逻辑坐标的转换 void DPtoLP( LPPOINT lpPoints, int nCount = 1 ) const; void DPtoLP( LPRECT lpRect ) const; void DPtoLP( LPSIZ

34、E lpSize ) const; void LPtoDP( LPPOINT lpPoints, int nCount = 1 ) const; void LPtoDP( LPRECT lpRect ) const; void LPtoDP( LPSIZE lpSize ) const;4.1.3 关于映射模式的相关操作关于映射模式的相关操作 映射模式的关键概念映射模式的关键概念 映射方式映射方式 窗口窗口 原点、范围原点、范围 视口视口 原点、范围原点、范围 问题:如何运用映射模式。问题:如何运用映射模式。 定义自己的映射模式定义自己的映射模式 定义窗口和视口的映射方式定义窗口和视口的映射方

35、式 使用逻辑坐标绘图使用逻辑坐标绘图 如果使用了设备坐标,应注意如果使用了设备坐标,应注意设备坐标与逻辑坐标的转换设备坐标与逻辑坐标的转换。 如鼠标消息就使用设备坐标。如鼠标消息就使用设备坐标。4.1.4 映射模式应用举例映射模式应用举例在类中添加如下数据成员在类中添加如下数据成员int xWindowExt, yWindowExt, xViewPortExt, yViewPortEx;并在构造函数中,初始化为并在构造函数中,初始化为100 xWindowExt= yWindowExt= xViewPortExt= yViewPortEx=10;void CtestView:OnDraw(CD

36、C* pDC)pDC-SetMapMode(MM_ANISOTROPIC);pDC-SetWindowExt( xWindowExt, yWindowExt); pDC-SetViewportOrg(400,400); pDC-SetViewportExt( xViewPortExt, - yViewPortExt);pDC-MoveTo(-1000,0); /坐标轴坐标轴pDC-LineTo(1000,0);pDC-MoveTo(0,-1000); pDC-LineTo(0,1000);pDC-Rectangle(100,100,300,300);/矩形矩形pDC-Ellipse(200,1

37、00,400,300); /椭圆椭圆4.1.4 映射模式应用举例映射模式应用举例例子程序。例子程序。void CtestView:OnScaleup()xViewPortExt+; yViewPortExt+;Invalidate();void CtestView:OnScaledown()if(xViewPortExt1) xViewPortExt-; yViewPortExt-; Invalidate();void CtestView:OnScaleorgin()xViewPortExt=10; yViewPortExt=10;Invalidate(); 4.1.4 映射模式应用举例映射模

38、式应用举例4.3 GDI对象对象 图形设备接口图形设备接口(GDI:Graphics Device Interface) 为程序员提供了一个设备无关的设备接口。为程序员提供了一个设备无关的设备接口。 Gdi对象分类对象分类 画笔:绘制线和图形的边框。画笔:绘制线和图形的边框。 画刷:绘制一个图形的内部区域。画刷:绘制一个图形的内部区域。 字体:定义字体字体:定义字体 区域:设备上的一个区域,可用于定义裁剪区域等操作区域:设备上的一个区域,可用于定义裁剪区域等操作 位图:一个由颜色位组成的数组,用于表示一个图形位图:一个由颜色位组成的数组,用于表示一个图形 调色板:一个颜色列表,用于建立逻辑颜色

39、到设备颜色的映射。调色板:一个颜色列表,用于建立逻辑颜色到设备颜色的映射。4.3 GDI对象对象 Windows GDI对象的使用规则对象的使用规则 创建创建GDI对象对象 选入设备描述表选入设备描述表 使用这些选入的设备描述表属性使用这些选入的设备描述表属性GDI对象对象 从设备描述表中删除从设备描述表中删除 删除删除GDI对象对象CGdiObject ClassCGdiObject类类 MFC定义的一个定义的一个GDI对象的基类,为使用这些对象的基类,为使用这些GDI对象提对象提供了一个统一的接口。供了一个统一的接口。如如pen, brushe, font, bitmap, region和

40、和palette等等. CGdiObject类成员类成员m_hObject:GDI对象句柄。对象句柄。CGdiObject:构造函数:构造函数Attach:连接到一个:连接到一个GDI对象。对象。 CreateStockObject:创建一个创建一个 Windows预定义的画笔、刷或字体存储对象预定义的画笔、刷或字体存储对象.CGdiObject ClassDeleteObject:删除相连的删除相连的GDI对象。对象。DeleteTempMap:删除一个用删除一个用 FromHandle相联系的相联系的GDI对象对象.Detach:切断与此对象相联系的切断与此对象相联系的Gdi对象并返回对象

41、并返回 Windows GDI 对象的句柄对象的句柄.FromHandle:返回一个与给定句柄返回一个与给定句柄CGDI对象指针。对象指针。GetObjectType取取GDI对象的类型对象的类型.GetSafeHandle返回句柄。返回句柄。CGdiObject ClassUnrealizeObject重置重置画笔原点画笔原点 or 逻辑调色板逻辑调色板.operator !=比较运算符比较运算符.operator =比较运算符比较运算符operator HGDIOBJ检索句柄检索句柄Attach和和Detach函数函数BOOL Attach(HGDIOBJ hObject);Attache

42、s a Windows GDI object to a CGdiObject object.这个函数的含义是什么?看如下代码。这个函数的含义是什么?看如下代码。CPen pen; /定义了一个定义了一个CGdiObject类的派生类对象类的派生类对象HGDIOBJ hObject;/定义了一个句柄定义了一个句柄HGDIOBJ hObject=:CreatePen(0,1,RGB(0,0,0);pen.Attach(hObject);pen.Detach();:DeleteObject(hObject)CreateStockObject函数函数BOOL CreateStockObject( in

43、t nIndex);查找查找windows预定义的预定义的GDI对象对象,并将这个并将这个GDI对象与一个对象与一个 CGdiObject 相连接,并返回这个相连接,并返回这个CGdiObject 对象。对象。windows预定义的预定义的GDI对象对象ValueMeaningWHITE_BRUSH白画刷白画刷.BLACK_BRUSH黑画刷黑画刷.LTGRAY_BRUSH亮灰色画刷亮灰色画刷.GRAY_BRUSH灰色画刷灰色画刷DC_BRUSH实心彩色画刷。默认白色,可用实心彩色画刷。默认白色,可用 SetDCBrushColor函数修改。函数修改。DKGRAY_BRUSH 深灰画刷深灰画刷N

44、ULL_BRUSH空画刷空画刷 (等价于等价于HOLLOW_BRUSH).HOLLOW_BRUSH 空心画刷空心画刷 (等价于等价于NULL_BRUSH).NULL_PEN空画笔空画笔.WHITE_PEN白色画笔白色画笔.DC_PEN实心彩色画笔实心彩色画笔. 默认色是白色默认色是白色.可用可用 SetDCPenColor 函数修改。函数修改。 BLACK_PEN黑色笔黑色笔.windows预定义的预定义的GDI对象对象ValueMeaningDEVICE_DEFAULT_FONT 设备依赖字体设备依赖字体.DEFAULT_GUI_FONT用户界面对象用户界面对象(菜单对话框菜单对话框)的默认

45、字体的默认字体(MS Sans Serif)OEM_FIXED_FONTOEM 固定宽度字体固定宽度字体.SYSTEM_FONT系统字体系统字体. SYSTEM_FIXED_FONT固定宽度字体固定宽度字体ANSI_VAR_FONTWindows 变宽度系统字体变宽度系统字体.ANSI_FIXED_FONTWindows固定宽度字体固定宽度字体DEFAULT_PALETTE默认调色板默认调色板.4.3.2 画刷画刷 画刷画刷 Windows定义画刷定义画刷WHITE_BRUSH、BLACK_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DC_BRUSH、DKGRAY_BRUSH、

46、NULL_BRUSH 自定义逻辑画刷自定义逻辑画刷SolidBrushhBrush = CreateSolidBrush (crColor) HatchBrushhBrush = CreateHatchBrush (iHatchStyle, crColor) ; PatternBrush BOOL CreatePatternBrush( CBitmap* pBitmap );BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage ); CBrush Class CPen( ); CPen( int nPenStyle, int n

47、Width, COLORREF crColor ); CPen( int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL );画笔风格画笔风格nPenStyle PS_SOLIDPS_DASHPS_DOTPS_DASHDOTPS_DASHDOTDOTPS_NULLPS_INSIDEFRAME4.3.3 CBrush Class创建函数创建函数BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush )

48、;BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB,UINT nUsage);BOOL CreateDIBPatternBrush(const void* lpPackedDIB,UINT nUsage);BOOL CreatePatternBrush( CBitmap* pBitmap );BOOL CreateHatchBrush( int nIndex, COLORREF crColor );BOOL CreateSolidBrush( COLORREF crColor );BOOL CreateSysColorBrush( int nInde

49、x );DWORD WINAPI GetSysColor(int nIndex );ValueValueMeaning0COLOR_SCROLLBARScroll bar gray area.1COLOR_BACKGROUNDDesktop.1COLOR_DESKTOPDesktop.2COLOR_ACTIVECAPTIONActive window title bar.3COLOR_INACTIVECAPTION Inactive window caption.4COLOR_MENUMenu background.5COLOR_WINDOWWindow background.6COLOR_W

50、INDOWFRAMEWindow frame.7COLOR_MENUTEXTText in menus.8COLOR_WINDOWTEXTText in windows.9COLOR_CAPTIONTEXTText in caption, size box, and scroll bar arrow box.10COLOR_ACTIVEBORDERActive window border.11COLOR_INACTIVEBORDERInactive window border.12COLOR_APPWORKSPACEBackground color of multiple document i

51、nterface (MDI) applications.13COLOR_HIGHLIGHTItem(s) selected in a control.14COLOR_HIGHLIGHTTEXTText of item(s) selected in a control.15COLOR_3DFACEFace color for 3D display elements and for dialog box backgrounds.系统颜色列表系统颜色列表 SysColor ListValue ValueMeaning16COLOR_3DSHADOWShadow color for 3D displa

52、y16COLOR_BTNSHADOWShadow color for 3D display elements.17COLOR_GRAYTEXTGrayed (disabled) text.18COLOR_BTNTEXTText on push buttons.19COLOR_INACTIVECAPTIONTEXTColor of text in an inactive caption.20COLOR_3DHIGHLIGHTHighlight for three-dimensional display elements 20COLOR_3DHILIGHTHighlight for 3D disp

53、lay elements 20COLOR_BTNHIGHLIGHT Highlight for 3D display elements 21COLOR_3DDKSHADOWDark shadow for three-dimensional display elements.22COLOR_3DLIGHTLight for 3D display elements 23COLOR_INFOTEXTText color for tooltip controls.24COLOR_INFOBKBackground color for tooltip controls.26COLOR_HOTLIGHTCo

54、lor for a hyperlink or hot-tracked item.27COLOR_GRADIENTACTIVECAPTIONRight side color of active windows title bar. 28COLOR_GRADIENTINACTIVECAPTIONRight side color of an inactive windows title bar.29COLOR_MENUHILIGHTThe color used to highlight menu items.30COLOR_MENUBARThe background color for the me

55、nu bar 4.3.4 字体字体 字体字体 文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸等方面的属性。等方面的属性。 字样字样 是字符书写和显示时表现出的特定模式是字符书写和显示时表现出的特定模式. 例如,对于汉字通常有宋体、楷体、隶书、黑体以及魏碑林等多例如,对于汉字通常有宋体、楷体、隶书、黑体以及魏碑林等多种字样;种字样; 字体风格字体风格 主要表现为字体的主要表现为字体的粗细粗细和和倾斜倾斜等特点;等特点; 字体尺寸字体尺寸指字符所占区域的大小,用字符高度描述。可取毫米或英寸作为单指字符所占区域的大小,用字符高度描述。

56、可取毫米或英寸作为单位位. 常常用一种称为点常常用一种称为点pitch的单位,一点约折合为的单位,一点约折合为1/72英寸。对英寸。对于汉字,还常用号数来表示字体尺寸于汉字,还常用号数来表示字体尺寸,初号字、小初、一号、小一初号字、小初、一号、小一、二号、小二等,如此类推,字体尺寸越来越小。、二号、小二等,如此类推,字体尺寸越来越小。4.3.4 字体字体 字体分类字体分类 根据字体的构造技术,可以把字体分为三种基本的技术类型:点根据字体的构造技术,可以把字体分为三种基本的技术类型:点阵字体、矢量字体和阵字体、矢量字体和TrueType字体。字体。 点阵字体点阵字体 也称光栅字体或位图字体,其中

57、每个字符的原型都是以固定的位也称光栅字体或位图字体,其中每个字符的原型都是以固定的位图形式存储在字库中,如图形式存储在字库中,如System, MSSerif, FixedSys, Terminal和和SmallFonts等等;等等; 点阵字体依赖于特定的设备分辨率,是与设备相关的字体;矢量点阵字体依赖于特定的设备分辨率,是与设备相关的字体;矢量字体和字体和TrueType字体都是与设备无关的,可以任意缩放。字体都是与设备无关的,可以任意缩放。 矢量字体矢量字体 也称为笔画字体或绘图仪字体,则是把字符分解为一系列直线而也称为笔画字体或绘图仪字体,则是把字符分解为一系列直线而存储起来,如存储起来

58、,如Modern,Roman和和Script等等;等等;4.3.4 字体字体TrueType字体字体 可称为写真字体,其字符原型是一系列直线和曲线指令的线索的可称为写真字体,其字符原型是一系列直线和曲线指令的线索的集合集合, 如如Courier, NewTimesNewRoman,Symbol和和Arial等等。等等。 TrueType字体的生成速率较快,使用也最广泛。字体的生成速率较快,使用也最广泛。4.3.4 字体字体 逻辑字体与物理字体逻辑字体与物理字体 逻辑字体与逻辑画笔和逻辑画刷相似,逻辑字体是应逻辑字体与逻辑画笔和逻辑画刷相似,逻辑字体是应用程序对于理想字体的一种描述方式。而实际安

59、装在用程序对于理想字体的一种描述方式。而实际安装在操作系统中的和存在于设备中的字体都称为物理字体操作系统中的和存在于设备中的字体都称为物理字体。应用程序在使用逻辑字体绘制文字时,系统会采用。应用程序在使用逻辑字体绘制文字时,系统会采用一种特定的算法把一种逻辑字体映射为最匹配的物理一种特定的算法把一种逻辑字体映射为最匹配的物理字体。字体。字体结构字体结构typedef struct tagTEXTMETRIC LONG tmHeight; /纵向高度纵向高度LONG tmAscent;LONG tmDescent; LONG tmInternalLeading; LONG tmExternalL

60、eading; LONG tmAveCharWidth; /宽度宽度LONG tmMaxCharWidth; LONG tmWeight; /权重:权重:LONG tmOverhang; /(粗体斜体等字符的)附加宽度(粗体斜体等字符的)附加宽度LONG tmDigitizedAspectX; /横宽比例横宽比例LONG tmDigitizedAspectY; 字体结构字体结构TCHAR tmFirstChar; TCHAR tmLastChar; TCHAR tmDefaultChar;/默认字体默认字体TCHAR tmBreakChar; /对其的间断字符对其的间断字符BYTE tmItalic; /斜体斜体BYTE tmUnder

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论