設備描述表概述(共91頁).ppt_第1頁
設備描述表概述(共91頁).ppt_第2頁
設備描述表概述(共91頁).ppt_第3頁
設備描述表概述(共91頁).ppt_第4頁
設備描述表概述(共91頁).ppt_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第4章章 設備描述表設備描述表4.1 設備描述表概述設備描述表概述4.2 映射模式映射模式4.3 GDI對象對象4.4 設備描述表屬性設備描述表屬性4.1 設備描述表設備描述表 設備描述表設備描述表(Device Context) 一種一種Windows數據結構,用來描述繪制窗口所需要的數據結構,用來描述繪制窗口所需要的信息。信息。 它定義了它定義了坐標映射模式坐標映射模式、一組、一組GDI圖形對象圖形對象及其及其屬性屬性。 GDI對象對象 畫線的畫線的筆筆,繪圖填圖的,繪圖填圖的刷子刷子,位圖位圖,調色板調色板,剪裁剪裁區(qū)域區(qū)域,及,及路徑路徑(Path)。設備描述表分類設備描述表分類名稱

2、名稱特點特點Display顯示設備描述表,提供對視頻顯示設備上顯示設備描述表,提供對視頻顯示設備上的繪制操作的支持的繪制操作的支持Printer打印設備描述表,提供對打印機、繪圖儀打印設備描述表,提供對打印機、繪圖儀設備上的繪制操作的支持設備上的繪制操作的支持Memory內存設備描述表,提供對位圖操作的支持內存設備描述表,提供對位圖操作的支持Information信息設備描述表,提供對操作設備信息獲信息設備描述表,提供對操作設備信息獲取的支持取的支持設設備備描描述述表表屬屬性性屬性屬性缺省值缺省值Pen畫筆,畫筆,BLACK_PENBrush畫刷,畫刷,WHITE_BRUSHBitmap位圖位

3、圖Font字體,字體,SYSTEM_FONTPalette調色板,調色板,DEFAULT_PALETTEClipping region裁剪區(qū)域裁剪區(qū)域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 設備描述表的使用步驟設備描述表的使用步驟設備描述表的使用步驟:設備描述表的使用步驟:獲取或者創(chuàng)立設備描述表;獲取或者創(chuàng)立設備描述表;必要的話,

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) ; 3 整個

6、窗口整個窗口 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

7、(hdc) ; DeleteDC (hdcMem) ; 設置設備描述表的屬性設置設備描述表的屬性設備描述表屬性的表示設備描述表屬性的表示復雜復雜GDI對象:如畫筆、畫刷、位圖、調色板等。對象:如畫筆、畫刷、位圖、調色板等。簡單簡單MFC類對象:如裁剪區(qū)域,原點。類對象:如裁剪區(qū)域,原點。簡單變量:字體顏色、背景顏色等。簡單變量:字體顏色、背景顏色等。一組符號常量:如各種模式,繪制模式,背景模式和填充模式等。一組符號常量:如各種模式,繪制模式,背景模式和填充模式等。設置設備描述表屬性的方式設置設備描述表屬性的方式選入選出方式:在處理事件期間選入,事件處理完畢后選出。選入選出方式:在處理事件期間選

8、入,事件處理完畢后選出。狀態(tài)機方式:按需要隨時設置。狀態(tài)機方式:按需要隨時設置。設置設備描述表的屬性設置設備描述表的屬性設備描述表屬性的保持問題設備描述表屬性的保持問題通常情況下,在一個事件函數中設置的設備描述表屬性通常不能保通常情況下,在一個事件函數中設置的設備描述表屬性通常不能保存到下一個消息函數,所以對于每一個消息函數,都應該在使用設存到下一個消息函數,所以對于每一個消息函數,都應該在使用設備描述表之前都要重新進行設置。備描述表之前都要重新進行設置。但但windows提供了保持設備描述表屬性的機制提供了保持設備描述表屬性的機制設備描述表的保持機制設備描述表的保持機制設備描述表的保持機制設

9、備描述表的保持機制自動保存:每次設置的屬性均保存在自動保存:每次設置的屬性均保存在windows設備設備描述表中。描述表中。創(chuàng)立窗口時創(chuàng)立窗口時(WM_CREATE消息消息),設置,設置CS_OWNDC風格。風格。動態(tài)管理機制:動態(tài)管理機制:使用以下一組使用以下一組API函數管理設備描述表屬性。函數管理設備描述表屬性。保存保存/恢復設備上下文?;謴驮O備上下文。idSaved = SaveDC (hdc) ; 改變一些屬性改變一些屬性 ;RestoreDC (hdc, idSaved) ; 以堆棧方式使用以堆棧方式使用SaveDC和和RestoreDCSaveDC (hdc) ; Restore

10、DC (hdc, -1) ; 或使用或使用CDC類成員函數管理設備描述表屬性。類成員函數管理設備描述表屬性。保存保存/恢復設備上下文。恢復設備上下文。idSaved = SaveDC () ; 改變一些屬性改變一些屬性 ;RestoreDC ( idSaved) ; 以堆棧方式使用以堆棧方式使用SaveDC和和RestoreDCSaveDC () ; RestoreDC (-1) ; 4.1.2 設備描述表的繪圖函數設備描述表的繪圖函數點點COLORREF GetPixel( int x, int y ) const; COLORREF GetPixel( POINT point ) cons

11、t;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 y);BOOL L

12、ineTo( 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 y3, int x

13、4, 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 PolyDraw(

14、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 nDestWidth, int

15、 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, CBitmap& ma

16、skBitmap, 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, int nSrcWid

17、th, 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, COLORRE

18、F 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, COLORREF

19、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 Polygon(

20、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 y3, int x4

21、, 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 lpRect, U

22、INT 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 lpDTParams );vi

23、rtual 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 設備描述表的繪圖函數設備描述表的繪圖函數區(qū)域:區(qū)域:BOOL FillRgn( CRgn* pRgn, CBrush* pBrush )

24、;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 nVertices

25、, 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) 設備上的一個矩形區(qū)域,使用設備坐標。通常和顯示區(qū)域相同。設備上的一個矩形區(qū)域,使用設備坐標。通常和顯示區(qū)域相同。 實際設備使用的坐標實際設備使用的坐標 視口的指標視口的指標 視口原點視口原點(0,0)和視口范圍和視口范圍(1,1)和坐標軸方向。和坐標軸方向。 窗口窗口(window) 用戶圖形用戶圖形(與現實世

27、界中的實體相對應與現實世界中的實體相對應)使用的矩形區(qū)域,使用邏使用的矩形區(qū)域,使用邏輯坐標,可以用圖素、毫米、英寸或任何其它單位。輯坐標,可以用圖素、毫米、英寸或任何其它單位。 GDI繪圖函數中使用窗口坐標。繪圖函數中使用窗口坐標。 窗口的表示窗口的表示 窗口原點窗口原點(0,0)窗口范圍窗口范圍(1,1)和坐標軸方向和坐標軸方向4.2.1 坐標變換公式坐標變換公式 4.2.1 坐標變換公式坐標變換公式窗口窗口視口視口4.1.2 映射模式的種類映射模式的種類映像方式映像方式 邏輯單位邏輯單位x值值 y值值 MM_TEXT 圖素圖素 右右 下下 MM_LOMETRIC 0.1 mm 右右 上上

28、 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映像方式映像方式 映像方式映像方式 邏輯單位邏輯單位x值

29、值 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_ANISOTROP

30、IC 邏輯單位被轉換成軸邏輯單位被轉換成軸(非非)等距的任意單位等距的任意單位; 可以使用可以使用SetWindowExt 和和 SetViewportExt 指定希望的指定希望的單位和方向單位和方向. GDI會做必要的調整以保證會做必要的調整以保證x軸和軸和y軸方向上的等距。軸方向上的等距。4.1.3 關于映射模式的相關操作關于映射模式的相關操作 映射模式:映射模式: virtual int SetMapMode(int nMapMode); int GetMapMode( ) const; 視口比例視口比例 CSize GetViewportExt( ) const; virtual CS

31、ize 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 CPoint Of

32、fsetViewportOrg( 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 SetWindowOrg( int

33、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( LPSIZE lpSize

34、) 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(CDC* pDC)pD

36、C-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,100,400,30

37、0); /橢圓橢圓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 映射模式應用舉例映射模式應用舉例4.3

38、GDI對象對象 圖形設備接口圖形設備接口(GDI:Graphics Device Interface) 為程序員提供了一個設備無關的設備接口。為程序員提供了一個設備無關的設備接口。 Gdi對象分類對象分類 畫筆:繪制線和圖形的邊框。畫筆:繪制線和圖形的邊框。 畫刷:繪制一個圖形的內部區(qū)域。畫刷:繪制一個圖形的內部區(qū)域。 字體:定義字體字體:定義字體 區(qū)域:設備上的一個區(qū)域,可用于定義裁剪區(qū)域等操作區(qū)域:設備上的一個區(qū)域,可用于定義裁剪區(qū)域等操作 位圖:一個由顏色位組成的數組,用于表示一個圖形位圖:一個由顏色位組成的數組,用于表示一個圖形 調色板:一個顏色列表,用于建立邏輯顏色到設備顏色的映射。

39、調色板:一個顏色列表,用于建立邏輯顏色到設備顏色的映射。4.3 GDI對象對象 Windows GDI對象的使用規(guī)那么對象的使用規(guī)那么 創(chuàng)立創(chuàng)立GDI對象對象 選入設備描述表選入設備描述表 使用這些選入的設備描述表屬性使用這些選入的設備描述表屬性GDI對象對象 從設備描述表中刪除從設備描述表中刪除 刪除刪除GDI對象對象CGdiObject ClassCGdiObject類類 MFC定義的一個定義的一個GDI對象的基類,為使用這些對象的基類,為使用這些GDI對象提供了一個統(tǒng)一的接口。對象提供了一個統(tǒng)一的接口。如如pen, brushe, font, bitmap, region和和palett

40、e等等. CGdiObject類成員類成員m_hObject:GDI對象句柄。對象句柄。CGdiObject:構造函數:構造函數Attach:連接到一個:連接到一個GDI對象。對象。 CreateStockObject:創(chuàng)立一個創(chuàng)立一個 Windows預定義的畫筆、刷或字體存儲預定義的畫筆、刷或字體存儲對象對象.CGdiObject ClassDeleteObject:刪除相連的刪除相連的GDI對象。對象。DeleteTempMap:刪除一個用刪除一個用 FromHandle相聯系的相聯系的GDI對象對象.Detach:切斷與此對象相聯系的切斷與此對象相聯系的Gdi對象并返回對象并返回 Win

41、dows GDI 對象的句柄對象的句柄.FromHandle:返回一個與給定句柄返回一個與給定句柄CGDI對象指針。對象指針。GetObjectType取取GDI對象的類型對象的類型.GetSafeHandle返回句柄。返回句柄。CGdiObject ClassUnrealizeObject重置畫筆原點重置畫筆原點 or 邏輯調色板邏輯調色板.operator !=比較運算符比較運算符.operator =比較運算符比較運算符operator HGDIOBJ檢索句柄檢索句柄Attach和和Detach函數函數BOOL Attach(HGDIOBJ hObject);Attaches a Win

42、dows 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( int nInde

43、x);查找查找windows預定義的預定義的GDI對象對象,并將這個并將這個GDI對象與一個對象與一個 CGdiObject 相連接,并返回這個相連接,并返回這個CGdiObject 對象。對象。windows預定義的預定義的GDI對象對象ValueMeaningWHITE_BRUSH白畫刷白畫刷.BLACK_BRUSH黑畫刷黑畫刷.LTGRAY_BRUSH亮灰色畫刷亮灰色畫刷.GRAY_BRUSH灰色畫刷灰色畫刷DC_BRUSH實心彩色畫刷。默認白色,可用實心彩色畫刷。默認白色,可用 SetDCBrushColor函數修改。函數修改。DKGRAY_BRUSH 深灰畫刷深灰畫刷NULL_BRU

44、SH空畫刷空畫刷 (等價于等價于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系統(tǒng)字體系統(tǒng)字體. SYSTEM_FIXED_FONT固定寬度字體固定寬度字體ANSI_VAR_FONTWindows 變寬度系統(tǒng)字體變寬度系統(tǒng)字體.ANSI_FIXED_FONTWindows固定寬度字體固定寬度字體DEFAULT_PALETTE默認調色板默認調色板.4.3.2 畫刷畫刷 畫刷畫刷 Windows定義畫刷定義畫刷WHITE_BRUSH、BLACK_BRUSH、LTGRAY_BRUSH、GRAY_BRUSH、DC_BRUSH、DKGRAY_BRUSH、NULL_BR

46、USH 自定義邏輯畫刷自定義邏輯畫刷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 nWidth,

47、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創(chuàng)立函數創(chuàng)立函數BOOL CreateBrushIndirect(const LOGBRUSH* lpLogBrush );BOOL C

48、reateDIBPatternBrush( 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 nIndex );DWO

49、RD 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_WINDOWFR

50、AMEWindow 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 interfac

51、e (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.系統(tǒng)顏色列表系統(tǒng)顏色列表 SysColor ListValue ValueMeaning16COLOR_3DSHADOWShadow color for 3D display16COLO

52、R_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 display ele

53、ments 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_HOTLIGHTColor for

54、 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 menu bar

55、4.3.4 字體字體 字體字體 文字顯示和打印的外觀形式,它包括了文字的字樣、風格和尺寸文字顯示和打印的外觀形式,它包括了文字的字樣、風格和尺寸等方面的屬性。等方面的屬性。 字樣字樣 是字符書寫和顯示時表現出的特定模式是字符書寫和顯示時表現出的特定模式. 例如,對于漢字通常有宋體、楷體、隸書、黑體以及魏碑林等多例如,對于漢字通常有宋體、楷體、隸書、黑體以及魏碑林等多種字樣;種字樣; 字體風格字體風格 主要表現為字體的主要表現為字體的粗細粗細和和傾斜傾斜等特點;等特點; 字體尺寸字體尺寸指字符所占區(qū)域的大小,用字符高度描述。可取毫米或英寸作為單指字符所占區(qū)域的大小,用字符高度描述??扇『撩谆蛴⒋?/p>

56、作為單位位. 常常用一種稱為點常常用一種稱為點pitch的單位,一點約折合為的單位,一點約折合為1/72英寸。對英寸。對于漢字,還常用號數來表示字體尺寸于漢字,還常用號數來表示字體尺寸,初號字、小初、一號、小一初號字、小初、一號、小一、二號、小二等,如此類推,字體尺寸越來越小。、二號、小二等,如此類推,字體尺寸越來越小。4.3.4 字體字體 字體分類字體分類 根據字體的構造技術,可以把字體分為三種根本的技術類根據字體的構造技術,可以把字體分為三種根本的技術類型:點陣字體、矢量字體和型:點陣字體、矢量字體和TrueType字體。字體。 點陣字體點陣字體 也稱光柵字體或位圖字體,其中每個字符的原型

57、都是以固也稱光柵字體或位圖字體,其中每個字符的原型都是以固定的位圖形式存儲在字庫中,如定的位圖形式存儲在字庫中,如System, MSSerif, FixedSys, Terminal和和SmallFonts等等;等等; 點陣字體依賴于特定的設備分辨率,是與設備相關的字體點陣字體依賴于特定的設備分辨率,是與設備相關的字體;矢量字體和;矢量字體和TrueType字體都是與設備無關的,可以任字體都是與設備無關的,可以任意縮放。意縮放。 矢量字體矢量字體 也稱為筆畫字體或繪圖儀字體,那么是把字符分解為一系也稱為筆畫字體或繪圖儀字體,那么是把字符分解為一系列直線而存儲起來,如列直線而存儲起來,如Mod

58、ern,Roman和和Script等等;等等;4.3.4 字體字體TrueType字體字體 可稱為寫真字體,其字符原型是一系列直線和曲線指令的線索的可稱為寫真字體,其字符原型是一系列直線和曲線指令的線索的集合集合, 如如Courier, NewTimesNewRoman,Symbol和和Arial等等。等等。 TrueType字體的生成速率較快,使用也最廣泛。字體的生成速率較快,使用也最廣泛。4.3.4 字體字體 邏輯字體與物理字體邏輯字體與物理字體 邏輯字體與邏輯畫筆和邏輯畫刷相似,邏輯字體是應邏輯字體與邏輯畫筆和邏輯畫刷相似,邏輯字體是應用程序對于理想字體的一種描述方式。而實際安裝在用程序

59、對于理想字體的一種描述方式。而實際安裝在操作系統(tǒng)中的和存在于設備中的字體都稱為物理字體操作系統(tǒng)中的和存在于設備中的字體都稱為物理字體。應用程序在使用邏輯字體繪制文字時,系統(tǒng)會采用。應用程序在使用邏輯字體繪制文字時,系統(tǒng)會采用一種特定的算法把一種邏輯字體映射為最匹配的物理一種特定的算法把一種邏輯字體映射為最匹配的物理字體。字體。字體結構字體結構typedef struct tagTEXTMETRIC LONG tmHeight; /縱向高度縱向高度LONG tmAscent;LONG tmDescent; LONG tmInternalLeading; LONG tmExternalLeadin

60、g; LONG tmAveCharWidth; /寬度寬度LONG tmMaxCharWidth; LONG tmWeight; /權重:權重:LONG tmOverhang; /粗體斜體等字符的附加寬度粗體斜體等字符的附加寬度LONG tmDigitizedAspectX; /橫寬比例橫寬比例LONG tmDigitizedAspectY; 字體結構字體結構TCHAR tmFirstChar; TCHAR tmLastChar; TCHAR tmDefaultChar;/默認字體默認字體TCHAR tmBreakChar; /對其的間斷字符對其的間斷字符BYTE tmItalic; /斜體斜體BYTE tmUnderlined;/下劃

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論