




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第7章圖形、文本和打印章圖形、文本和打印圖形、文本和打印圖形、文本和打印nWindow為操作系統(tǒng)和硬件提供了圖形用戶接口為操作系統(tǒng)和硬件提供了圖形用戶接口GUI(Graphics Users Interface)。一切的信。一切的信息,甚至文本,在息,甚至文本,在Windows下都可以作為圖形下都可以作為圖形畫到屏幕上。畫到屏幕上。nWindow的的GDI(設(shè)備圖形接口設(shè)備圖形接口)提供了繪圖的根提供了繪圖的根本工具,如畫點、線、多邊形、位圖以及文本輸本工具,如畫點、線、多邊形、位圖以及文本輸出。主要擔(dān)任系統(tǒng)與用戶或繪圖程序之間的信息出。主要擔(dān)任系統(tǒng)與用戶或繪圖程序之間的信息交換,并在輸出設(shè)
2、備上顯示圖形或文字。交換,并在輸出設(shè)備上顯示圖形或文字。nMFC提供了設(shè)備環(huán)境類提供了設(shè)備環(huán)境類CDC和圖形對象類和圖形對象類CGdiObject來完成繪圖操作。來完成繪圖操作。7.1 設(shè)備環(huán)境和簡單數(shù)據(jù)類設(shè)備環(huán)境和簡單數(shù)據(jù)類設(shè)備環(huán)境設(shè)備環(huán)境n設(shè)備環(huán)境是由設(shè)備環(huán)境是由Windows保管的一個數(shù)據(jù)構(gòu)造,保管的一個數(shù)據(jù)構(gòu)造,包含運用程序向設(shè)備輸出時所需求的信息,如當(dāng)包含運用程序向設(shè)備輸出時所需求的信息,如當(dāng)前背風(fēng)光或區(qū)域圖案、區(qū)域的無效部分等。前背風(fēng)光或區(qū)域圖案、區(qū)域的無效部分等。nWindows經(jīng)過設(shè)備環(huán)境確定任何輸出設(shè)備的經(jīng)過設(shè)備環(huán)境確定任何輸出設(shè)備的GDI輸出的位置和圖形的屬性。輸出的位置和
3、圖形的屬性。n當(dāng)用戶繪圖時,需求訪問設(shè)備描畫表當(dāng)用戶繪圖時,需求訪問設(shè)備描畫表DC(Device Context),它的主要作用是提供程序與物理設(shè)備,它的主要作用是提供程序與物理設(shè)備或者偽設(shè)備之間的聯(lián)絡(luò),另外還處置繪圖屬性設(shè)或者偽設(shè)備之間的聯(lián)絡(luò),另外還處置繪圖屬性設(shè)置,如文本顏色設(shè)置。置,如文本顏色設(shè)置。7.1.1 設(shè)備環(huán)境類設(shè)備環(huán)境類n設(shè)備環(huán)境類設(shè)備環(huán)境類CDC是是GDI封裝在封裝在MFC中的最大的一中的最大的一個類,它表示總的個類,它表示總的DC,是一切,是一切DC類的基類。類的基類。CDC類定義環(huán)境對象,并提供在顯示器、打印機類定義環(huán)境對象,并提供在顯示器、打印機或窗口客戶區(qū)上繪制圖形的
4、方法,它封裝了運用或窗口客戶區(qū)上繪制圖形的方法,它封裝了運用設(shè)備環(huán)境的設(shè)備環(huán)境的GDI函數(shù)。函數(shù)。nCDC類的成員函數(shù)有近類的成員函數(shù)有近200個,可分為位圖函數(shù)、個,可分為位圖函數(shù)、剪裁函數(shù)、繪圖屬性函數(shù)、初始化函數(shù)和字體函剪裁函數(shù)、繪圖屬性函數(shù)、初始化函數(shù)和字體函數(shù)等。數(shù)等。7.1.1 設(shè)備環(huán)境類設(shè)備環(huán)境類n設(shè)備環(huán)境類設(shè)備環(huán)境類CDC提供了繪制和打印的全部函數(shù)。提供了繪制和打印的全部函數(shù)。為了能讓用戶運用一些特殊的設(shè)備環(huán)境,為了能讓用戶運用一些特殊的設(shè)備環(huán)境,CDC還還派生了派生了CPaintDC、CClientDC、CWindowDC和和CMetaFileDC類。類。n (1)CPain
5、tDC比較特殊,它的構(gòu)造函數(shù)和析構(gòu)比較特殊,它的構(gòu)造函數(shù)和析構(gòu)函數(shù)都是針對函數(shù)都是針對OnPaint進(jìn)展的,但用戶一旦獲得進(jìn)展的,但用戶一旦獲得相關(guān)的相關(guān)的CDC指針,就可以將它當(dāng)成任何設(shè)備環(huán)境指針,就可以將它當(dāng)成任何設(shè)備環(huán)境(包括屏幕、打印機包括屏幕、打印機)指針來運用。指針來運用。CPaintDC類類的構(gòu)造函數(shù)會自動調(diào)用的構(gòu)造函數(shù)會自動調(diào)用BeginPaint,而它的析構(gòu),而它的析構(gòu)函數(shù)那么會自動調(diào)用函數(shù)那么會自動調(diào)用EndPaint。7.1.1 設(shè)備環(huán)境類設(shè)備環(huán)境類n (2)CClientDC只能在窗口的客戶區(qū)只能在窗口的客戶區(qū)(不包括邊框、標(biāo)不包括邊框、標(biāo)題欄、菜單欄以及形狀欄題欄、菜
6、單欄以及形狀欄)中進(jìn)展繪圖,點中進(jìn)展繪圖,點(0,0)通常指通常指的是客戶區(qū)的左上角。而的是客戶區(qū)的左上角。而CWindowDC允許在窗口的恣允許在窗口的恣意位置中進(jìn)展繪圖,點意位置中進(jìn)展繪圖,點(0,0)指整個窗口的左上角。指整個窗口的左上角。WindowDC和和CClientDC構(gòu)造函數(shù)分別調(diào)用構(gòu)造函數(shù)分別調(diào)用GetWindowDC和和GetDC,但它們的析構(gòu)函數(shù)都是調(diào),但它們的析構(gòu)函數(shù)都是調(diào)用用ReleaseDC函數(shù)。函數(shù)。n (3)CMetaFileDC封裝了在一個封裝了在一個Windows圖元文件中圖元文件中繪圖的方法。圖元文件是一系列與設(shè)備無關(guān)的圖片的集繪圖的方法。圖元文件是一系列
7、與設(shè)備無關(guān)的圖片的集合,由于它對圖象的保管比像素更準(zhǔn)確,因此往往在要合,由于它對圖象的保管比像素更準(zhǔn)確,因此往往在要求較高的場所下運用。目前的求較高的場所下運用。目前的Windows已運用加強格已運用加強格式式(enhanced-format)的的32位圖元文件來進(jìn)展操作。位圖元文件來進(jìn)展操作。7.1.2 坐標(biāo)映射坐標(biāo)映射要指定繪圖位置,需運用坐標(biāo)系。Windows提供了兩類坐標(biāo)系:設(shè)備坐標(biāo)系和邏輯坐標(biāo)系。 邏輯坐標(biāo)就是內(nèi)存中虛擬的坐標(biāo),可以了解為看不見的,而設(shè)備坐標(biāo)就是跟詳細(xì)的設(shè)備相聯(lián)絡(luò)的坐標(biāo)系統(tǒng),如:顯示器和打印機設(shè)備坐標(biāo)系下的坐標(biāo),大小與分辨率有關(guān)。 為了能保證打印的結(jié)果不受設(shè)備的影響,
8、Windows定義了一些映射方式,不同的映射方式?jīng)Q議了設(shè)備坐標(biāo)和邏輯坐標(biāo)之間的轉(zhuǎn)換關(guān)系,也就是兩種坐標(biāo)系統(tǒng)在相互轉(zhuǎn)換時,邏輯單位和設(shè)備單位之間的某種比例關(guān)系。闡明:Windows中,只需對需求設(shè)備環(huán)境句柄作參數(shù)的GDI函數(shù),映射方式才會起作用。 映映 射射 模模 式式映射模式含 義MM_TEXT每個邏輯單位等于一個設(shè)備像素,每個邏輯單位等于一個設(shè)備像素,x向右向右為正,為正,y向下為正向下為正MM_HIENGLISH每個邏輯單位為每個邏輯單位為0.001英寸,英寸,x向右為正,向右為正,y向上為正向上為正MM_LOENGLISH每個邏輯單位為每個邏輯單位為0.01英寸,英寸,x向右為正,向右為
9、正,y向上為正向上為正MM_HIMETRIC每個邏輯單位為每個邏輯單位為0.01毫米,毫米,x向右為正,向右為正,y向上為正向上為正MM_LOMETRIC每個邏輯單位為每個邏輯單位為0.1毫米,毫米,x向右為正,向右為正,y向向上為正上為正 MM_TWIPS每個邏輯單位為一個點的每個邏輯單位為一個點的1/20(一個點是(一個點是1/72 英寸),英寸),x向右為正,向右為正,y向上為正向上為正MM_ANISOTROPICx,y可變比例可變比例MM_ISOTROPICx,y等比例等比例 視口和窗口視口和窗口窗口:可以了解成一種邏輯坐標(biāo)下的窗口視口:可以了解成實踐看到的那個窗口,即設(shè)備坐標(biāo)下的窗口
10、,通常與客戶區(qū)一樣,窗口和視口是與映射方式相關(guān)聯(lián)的,映射方式就是用于從“窗口邏輯坐標(biāo)到“視口設(shè)備坐標(biāo)的映射。在映射方式MM_ANISOTROPIC和MM_ISOTROPIC中,經(jīng)??梢哉{(diào)用CDC:SetWindowExt()和CDC:SetViewportExt()來設(shè)置所需求的比例因子。根據(jù)“窗口和“視口的大小可以確定x和y的比例因子,它們的關(guān)系如下:x比例因子 =視口x大小/窗口x大小y比例因子 =視口y大小/窗口y大小 7.1.3. CPoint、CSize和和CRect CPoint、CSize和和CRect類是對類是對Windows的的POINT、SIZE和和RECT構(gòu)造的封裝,因此
11、它們構(gòu)造的封裝,因此它們可以直接運用各自構(gòu)造的數(shù)據(jù)成員??梢灾苯舆\用各自構(gòu)造的數(shù)據(jù)成員。 typedef struct tagPOINTLONG x; /點的點的x坐標(biāo)坐標(biāo)LONG y; /點的點的y坐標(biāo)坐標(biāo) POINT;CPoint類帶參數(shù)的常用構(gòu)造函數(shù)原型如下:類帶參數(shù)的常用構(gòu)造函數(shù)原型如下: CPoint( int initX, int initY ); CPoint( POINT initPt );7.1.3. CPoint、CSize和和CRecttypedef struct tagSIZEint cx; /程度大小程度大小int cy; /垂直大小垂直大小SIZE;CSize類帶參
12、數(shù)的常用構(gòu)造函數(shù)原型如下:類帶參數(shù)的常用構(gòu)造函數(shù)原型如下: CSize( int initCX, int initCY ); CSize( SIZE initSize ); 7.1.3. CPoint、CSize和和CRecttypedef struct tagRECTLONG left; /左上角點的左上角點的x坐標(biāo)坐標(biāo)LONG top; /左上角點的左上角點的y坐標(biāo)坐標(biāo)LONG right; /右下角點的右下角點的x坐標(biāo)坐標(biāo)LONG bottom;/右下角點的右下角點的y坐標(biāo)坐標(biāo)RECT;CRect類帶參數(shù)的常用構(gòu)造函數(shù)原型如下:類帶參數(shù)的常用構(gòu)造函數(shù)原型如下: CRect( int l,
13、 int t, int r, int b ); CRect( const RECT& srcRect ); CRect( LPCRECT lpSrcRect ); CRect( POINT point, SIZE size ); CRect( POINT topLeft, POINT bottomRight );CRect的常用操作的常用操作(1)成員函數(shù)成員函數(shù)功能說明功能說明int Width( ) const;返回矩形的寬度返回矩形的寬度int Height( ) const;返回矩形的高度返回矩形的高度CSize Size( ) const;返回矩形的大小,返回矩形的大小,CS
14、ize中的中的cx和和cy成成員分別表示矩形的寬度和高度員分別表示矩形的寬度和高度CPoint& TopLeft( );返回矩形左下角的點坐標(biāo)返回矩形左下角的點坐標(biāo)CPoint& BottomRight( ); 返回矩形右下角的點坐標(biāo)返回矩形右下角的點坐標(biāo)CPoint CenterPoint( ) const;返回返回CRect的中點坐標(biāo)的中點坐標(biāo)BOOL IsRectEmpty() const;如果一個矩形的寬度或高度是如果一個矩形的寬度或高度是0或負(fù)值,或負(fù)值,則稱這個矩形為空,返回則稱這個矩形為空,返回TRUEBOOL IsRectNull() const;如果一個矩形的
15、上、左、下和右邊的如果一個矩形的上、左、下和右邊的值都等于值都等于0,則返回,則返回TRUECRect的常用操作的常用操作(2)成員函數(shù)功能說明BOOL PtInRect( POINT point ) const;如果點如果點point位于矩形中位于矩形中(包括包括點在矩形的邊上點在矩形的邊上),則返回,則返回TRUEvoid SetRect( int x1, int y1, int x2, int y2 );將矩形的各邊設(shè)為指定的值,將矩形的各邊設(shè)為指定的值,左上角點為左上角點為(x1, y1),右下角點,右下角點為為(x2, y2)void SetRectEmpty();將矩形的所有坐標(biāo)設(shè)
16、置為零將矩形的所有坐標(biāo)設(shè)置為零void NormalizeRect( );使矩形符合規(guī)范使矩形符合規(guī)范void OffsetRect( int x, int y );void OffsetRect( POINT point );void OffsetRect( SIZE size );移動矩形,水平和垂直移動量移動矩形,水平和垂直移動量分別由分別由x、y或或point、size的兩的兩個成員來指定個成員來指定CRect的常用操作的常用操作(3)成員函數(shù)功能說明void InflateRect(int x,int y)void InflateRect(SIZE size)擴(kuò)大一個矩形,擴(kuò)大一個矩
17、形,x、cx用來擴(kuò)大用來擴(kuò)大矩形左右邊的數(shù)值,矩形左右邊的數(shù)值,y、cy用來用來擴(kuò)大矩形上、下邊的數(shù)值擴(kuò)大矩形上、下邊的數(shù)值(總寬度和總高度將被擴(kuò)大兩倍總寬度和總高度將被擴(kuò)大兩倍)void InflateRect(LPCRECT lpRect)void InflateRect(int l,int t,int r,int b)lpRect的各個成員用來指定擴(kuò)的各個成員用來指定擴(kuò)大每一邊的數(shù)值。大每一邊的數(shù)值。l、t、r、b分別用來指定擴(kuò)大矩分別用來指定擴(kuò)大矩形左、上、右和的數(shù)值形左、上、右和的數(shù)值BOOL IntersectRect(LPCRECT lpRect1, LPCRECT lpRect
18、2)兩個矩形相交,結(jié)果為空時返兩個矩形相交,結(jié)果為空時返回回FALSE,否則返回,否則返回TRUEBOOL UnionRect(LPCRECT lpRect1, LPCRECT lpRect2)兩個矩形合并,結(jié)果為空時返兩個矩形合并,結(jié)果為空時返回回FALSE,否則返回,否則返回TRUE7.1.4. 顏色和顏色對話框顏色和顏色對話框一個彩色象素的顯示需求顏色空間的支持,常用一個彩色象素的顯示需求顏色空間的支持,常用的顏色空間有的顏色空間有RGB和和YUV兩種。兩種。RGB顏色空間選用紅顏色空間選用紅(R)、綠、綠(G)、藍(lán)、藍(lán)(B)三種基色分量,經(jīng)過對這三種基色三種基色分量,經(jīng)過對這三種基色不
19、同比例的混合,可以得到不同的彩色效果。而不同比例的混合,可以得到不同的彩色效果。而YUV顏色空間是將一個彩色像素表示成一個亮度分量顏色空間是將一個彩色像素表示成一個亮度分量(Y)和和兩個色度分量兩個色度分量(U、V)。在在MFC中,中,CDC運用的是運用的是RGB顏色空間,其中,顏色空間,其中,COLORREF是用來表示是用來表示RGB顏色的一個顏色的一個32位的數(shù)據(jù)類位的數(shù)據(jù)類型。它可以用以下的十六進(jìn)制表示一個型。它可以用以下的十六進(jìn)制表示一個RGB值:值:0 x00bbggrr,其中,其中bb、gg、rr分別表示藍(lán)、綠、紅分別表示藍(lán)、綠、紅3個顏色分量的十六進(jìn)制值。個顏色分量的十六進(jìn)制值。
20、7.1.4. 顏色和顏色對話框顏色和顏色對話框在詳細(xì)操作在詳細(xì)操作RGB顏色時,可運用以下的宏操作:顏色時,可運用以下的宏操作:GetBValue、GetGValue、GetRValue來獲得其中來獲得其中各個顏色分量值。各個顏色分量值。如:如:int nRed=GetBValue(color);RGB來將指定的三個分量值轉(zhuǎn)換成一個來將指定的三個分量值轉(zhuǎn)換成一個32位的位的RGB顏色值。顏色值。如:如:COLORREF color=RGB(nRed,nGreen,nBlue);7.1.4. 顏色和顏色對話框顏色和顏色對話框MFC的的CColorDialog類為運用程序提供了顏色選類為運用程序提
21、供了顏色選擇通用對話框,構(gòu)造函數(shù)如下:擇通用對話框,構(gòu)造函數(shù)如下:CColorDialog(COLORREF clrInit=0,DWORD dwFlags=0,CWnd * pParentWnd=NULL);其中,其中,clrInit指定選擇的默許顏色值,默以為指定選擇的默許顏色值,默以為RGB(0,0,0)黑色。黑色。pParentWnd指定對話框的父窗口指定對話框的父窗口指針。指針。dwFlags指定對話框外觀和功能指定對話框外觀和功能(見教材見教材P209)。當(dāng)對話框單擊當(dāng)對話框單擊OK退出時,可調(diào)用以下成員函數(shù)獲得相退出時,可調(diào)用以下成員函數(shù)獲得相應(yīng)的顏色。應(yīng)的顏色。COLORREF
22、 GetColor() const;void SetCurrentColor(COLORREF clr);static COLORREF * GetSavedCustomColors()7.1.5. 圖形設(shè)備接口圖形設(shè)備接口 Windows為設(shè)備環(huán)境提供了各種各樣的繪圖工為設(shè)備環(huán)境提供了各種各樣的繪圖工具,例如用于畫線的具,例如用于畫線的“畫筆、填充區(qū)域的畫筆、填充區(qū)域的“畫刷以畫刷以及用于繪制文本的及用于繪制文本的“字體。字體。MFC封裝了這些工具,并提供相應(yīng)的類來作為運用封裝了這些工具,并提供相應(yīng)的類來作為運用程序的圖形設(shè)備接口程序的圖形設(shè)備接口GDI(這些類有一個共同的籠統(tǒng)基這些類有一個
23、共同的籠統(tǒng)基類類CGdiObject)。類 名說 明CBitmap “位圖位圖”是一種位矩陣,每一個顯示象素都對應(yīng)于其中是一種位矩陣,每一個顯示象素都對應(yīng)于其中的一個或多個位。用戶可以利用位圖來表示圖像,也可的一個或多個位。用戶可以利用位圖來表示圖像,也可以利用它來創(chuàng)建畫刷。以利用它來創(chuàng)建畫刷。CBrush“畫刷畫刷”定義了一種位圖形式的象素,利用它可對區(qū)域定義了一種位圖形式的象素,利用它可對區(qū)域內(nèi)部填充顏色或樣式。內(nèi)部填充顏色或樣式。CFont“字體字體”是一種具有某種風(fēng)格和尺寸的所有字符的完整是一種具有某種風(fēng)格和尺寸的所有字符的完整集合,它常常被當(dāng)作資源存于磁盤中,其中有一些還依集合,它常
24、常被當(dāng)作資源存于磁盤中,其中有一些還依賴于某種設(shè)備。賴于某種設(shè)備。CPalette “調(diào)色板調(diào)色板”是一種顏色映射接口,它允許應(yīng)用程序在不是一種顏色映射接口,它允許應(yīng)用程序在不干擾其他應(yīng)用程序的前提下,可以充分利用輸出設(shè)備的干擾其他應(yīng)用程序的前提下,可以充分利用輸出設(shè)備的顏色描繪能力。顏色描繪能力。CPen“畫筆畫筆”是一種用來畫線及繪制有形邊框的工具,用戶是一種用來畫線及繪制有形邊框的工具,用戶可以指定它的顏色及寬度,并且可以指定它畫實線、點可以指定它的顏色及寬度,并且可以指定它畫實線、點線或虛線等。線或虛線等。CRgn“區(qū)域區(qū)域”是由多邊形、橢圓或二者組合形成的一種范圍,是由多邊形、橢圓或
25、二者組合形成的一種范圍,可以利用它來進(jìn)行填充、裁剪以及鼠標(biāo)點中測試等??梢岳盟鼇磉M(jìn)行填充、裁剪以及鼠標(biāo)點中測試等。7.1.5. 圖形設(shè)備接口圖形設(shè)備接口在選擇在選擇GDI對象進(jìn)展繪圖時,可遵照以下步驟:對象進(jìn)展繪圖時,可遵照以下步驟:在堆棧中定義一個在堆棧中定義一個GDI對象對象(如如CPen對象對象),然后用相,然后用相應(yīng)的函數(shù)應(yīng)的函數(shù)(如如CreatePen)創(chuàng)建此創(chuàng)建此GDI對象,有些對象可對象,有些對象可用帶參的構(gòu)造函數(shù)一步創(chuàng)建完成。用帶參的構(gòu)造函數(shù)一步創(chuàng)建完成。將構(gòu)造的將構(gòu)造的GDI對象選入當(dāng)前設(shè)備環(huán)境中,同時將原來對象選入當(dāng)前設(shè)備環(huán)境中,同時將原來的的GDI對象保管起來。對象保管
26、起來。繪圖終了后,恢復(fù)當(dāng)前設(shè)備環(huán)境中原來的繪圖終了后,恢復(fù)當(dāng)前設(shè)備環(huán)境中原來的GDI對象。對象。程序終了后,框架會自動刪除程序創(chuàng)建的程序終了后,框架會自動刪除程序創(chuàng)建的GDI對象。對象。7.1.5. 圖形設(shè)備接口圖形設(shè)備接口void C*View:OnDraw(CDC* pDC)CPen penBlack; /創(chuàng)建對象創(chuàng)建對象penBlack.CreatePen(PS_SOLID,2,RGB(0,0,0);CPen *pOldPen=pDC-SelectObject(&penBlack);/用該畫筆繪圖用該畫筆繪圖pDC-MoveTo(20,50);pDC-LineTo(80,120)
27、;/恢復(fù)原來的畫筆恢復(fù)原來的畫筆pDC-SelectObject(pOldPen);7.1.5. 圖形設(shè)備接口圖形設(shè)備接口除了自定義的除了自定義的GDI對象外,還可運用對象外,還可運用CDC的成員函數(shù)的成員函數(shù)SelectStockObject將將Windows預(yù)定義的庫存預(yù)定義的庫存GDI對對象選入當(dāng)前設(shè)備環(huán)境中,并前往原先被選中的對象指針,象選入當(dāng)前設(shè)備環(huán)境中,并前往原先被選中的對象指針,同時使原先被選中的對象從設(shè)備環(huán)境中分別出來。同時使原先被選中的對象從設(shè)備環(huán)境中分別出來??杀贿x中的庫存可被選中的庫存GDI對象類型:對象類型:BLACK_BRUSH GRAY_BRUSHLTGRAY_BR
28、USH DKGRAY_BRUSH HOLLOW_BRUSH NULL_BRUSH WHITE_BRUSH BLACK_PENWHITE_PEN NULL_PENSYSTEM_FONT DEVICE_DEFAULT_FONT7.2 簡單圖形繪制簡單圖形繪制7.2.1. 畫畫 筆筆 畫筆是畫筆是Windows運用程序中用來繪制各種直線和曲運用程序中用來繪制各種直線和曲線的一種圖形工具,它可分為修飾畫筆和幾何畫筆兩種類線的一種圖形工具,它可分為修飾畫筆和幾何畫筆兩種類型。型。幾何畫筆通常在邏輯單元中繪圖并受當(dāng)前繪圖方式的影幾何畫筆通常在邏輯單元中繪圖并受當(dāng)前繪圖方式的影響。修飾畫筆通常在設(shè)備單元中繪
29、圖而忽略當(dāng)前繪圖方式。響。修飾畫筆通常在設(shè)備單元中繪圖而忽略當(dāng)前繪圖方式。在這兩種類型中,幾何畫筆的定義最復(fù)雜,它不但有修在這兩種類型中,幾何畫筆的定義最復(fù)雜,它不但有修飾畫筆的屬性,而且還跟畫刷的款式、陰影線類型有關(guān),飾畫筆的屬性,而且還跟畫刷的款式、陰影線類型有關(guān),通常用在對繪圖有較高要求的場所。而修飾畫筆只需簡單通常用在對繪圖有較高要求的場所。而修飾畫筆只需簡單的幾種屬性,通常用在簡單的直線和曲線等場所。的幾種屬性,通常用在簡單的直線和曲線等場所。7.2.1. 畫畫 筆筆一個修飾畫筆通常具有寬度、風(fēng)格和顏色三種一個修飾畫筆通常具有寬度、風(fēng)格和顏色三種屬性。畫筆的寬度用來確定所畫的線條寬度
30、,它屬性。畫筆的寬度用來確定所畫的線條寬度,它是用設(shè)備單位表示的。默許的畫筆寬度是一個像是用設(shè)備單位表示的。默許的畫筆寬度是一個像素單位。畫筆的顏色確定了所畫的線條顏色。畫素單位。畫筆的顏色確定了所畫的線條顏色。畫筆的風(fēng)格確定了所繪圖形的線型,它通常有實線筆的風(fēng)格確定了所繪圖形的線型,它通常有實線(PS_SOLID)、虛線、虛線(PS_DASH)、點線、點線(PS_DOT)、點劃線、點劃線(PS_DASHDOT)、雙點劃、雙點劃線線(PS_DASHDOTDOT)、不可見線、不可見線(PS_NULL)和內(nèi)框線和內(nèi)框線(PS_INSIDEFRAME)等七種風(fēng)格。等七種風(fēng)格。 1. 創(chuàng)建畫筆創(chuàng)建畫筆
31、CPenCPen類封裝圖形設(shè)備接口類封裝圖形設(shè)備接口GDIGDI畫筆對象的功能。創(chuàng)畫筆對象的功能。創(chuàng)建畫筆可以采用以下幾種方法:建畫筆可以采用以下幾種方法:(1)(1)運用無參構(gòu)造函數(shù)聲明對象,之后調(diào)用成員函運用無參構(gòu)造函數(shù)聲明對象,之后調(diào)用成員函數(shù)數(shù)CreatePen()CreatePen()創(chuàng)建詳細(xì)的畫筆。創(chuàng)建詳細(xì)的畫筆。BOOL CreatePen(int nPenStyle, int nWidth, BOOL CreatePen(int nPenStyle, int nWidth, COLORREF crColor); COLORREF crColor); 其中其中nPenStylen
32、PenStyle表示畫筆的款式。表示畫筆的款式。nWidthnWidth表示畫筆表示畫筆的線寬。的線寬。crColorcrColor表示畫筆的表示畫筆的RGBRGB顏色。顏色。例如:例如:CPen PenCPen Pen; Pen.CreatePen(PS_SOLID,1,RGB(255,0,0);Pen.CreatePen(PS_SOLID,1,RGB(255,0,0);/調(diào)用成員函數(shù),創(chuàng)建線寬為調(diào)用成員函數(shù),創(chuàng)建線寬為1 1的紅色實線畫筆的紅色實線畫筆1. 創(chuàng)建畫筆創(chuàng)建畫筆(2) 運用構(gòu)造函數(shù)創(chuàng)建畫筆運用構(gòu)造函數(shù)創(chuàng)建畫筆CPen(int nPenStyle,int nWidth,COLOR
33、REF cfColor)例如:例如: CPen Pen(PS_SOLID,1,RGB(255,0,0); / 調(diào)用構(gòu)造函數(shù),創(chuàng)建線寬為調(diào)用構(gòu)造函數(shù),創(chuàng)建線寬為1的紅色實線畫筆的紅色實線畫筆(3) 運用重載的構(gòu)造函數(shù)創(chuàng)建幾何畫筆運用重載的構(gòu)造函數(shù)創(chuàng)建幾何畫筆CPen(int nPenStyle,int nWidth, const LOGBRUSH*pLogBrush, i n t n S t y l e C o u n t = 0 , c o n s t D W O R D *lpstyle=NULL);2. 庫存畫筆庫存畫筆庫存畫筆又叫堆畫筆。庫存畫筆又叫堆畫筆。WindowsWindows定
34、義了三種庫存畫筆,定義了三種庫存畫筆,用戶可以直接運用這些畫筆,而不用創(chuàng)建對象。三種用戶可以直接運用這些畫筆,而不用創(chuàng)建對象。三種庫存畫筆分別是:庫存畫筆分別是:BLANK_PENBLANK_PEN:黑色畫筆;:黑色畫筆;WHILE_PENWHILE_PEN:白色畫筆;:白色畫筆;NULL_PENNULL_PEN:空畫筆。:空畫筆??梢赃\用可以運用CreatestockObject()CreatestockObject()函數(shù)進(jìn)展創(chuàng)建。函數(shù)進(jìn)展創(chuàng)建。CPen Pen;CPen Pen;Pen.CreatestockObject(WHILE_PEN);Pen.CreatestockObject(
35、WHILE_PEN);可以以庫存畫筆為參數(shù)來調(diào)用可以以庫存畫筆為參數(shù)來調(diào)用SelectStockObject()SelectStockObject()函數(shù)函數(shù), ,此函數(shù)選定放入當(dāng)前設(shè)備環(huán)境的新對象,并前往此函數(shù)選定放入當(dāng)前設(shè)備環(huán)境的新對象,并前往一個指向被交換對象的指針,一個指向被交換對象的指針,CPenCPen* *pOldPen=pDC-pOldPen=pDC-SelectStockObject(BLANK_PEN);SelectStockObject(BLANK_PEN);3. 3. 畫筆的運用方法畫筆的運用方法(1) (1) 創(chuàng)建畫筆;創(chuàng)建畫筆;(2) (2) 運用新的畫筆,保管原來
36、的畫筆以便恢復(fù);運用新的畫筆,保管原來的畫筆以便恢復(fù); CPen CPen * *pOldPen;pOldPen; pOldPen=pDC-selectObject(&penRed); pOldPen=pDC-selectObject(&penRed);(3) (3) 運用新畫筆作圖;運用新畫筆作圖;(4) (4) 恢復(fù)原來的畫筆恢復(fù)原來的畫筆 pDC-selectObject(pOldPen);pDC-selectObject(pOldPen);保管并恢復(fù)原來畫筆的緣由是每個圖形設(shè)備接口保管并恢復(fù)原來畫筆的緣由是每個圖形設(shè)備接口對象要占用一個對象要占用一個HDCHDC句柄,而
37、可用的句柄數(shù)量有限,句柄,而可用的句柄數(shù)量有限,假設(shè)用完后未及時釋放,積累下去將導(dǎo)致嚴(yán)重的運轉(zhuǎn)假設(shè)用完后未及時釋放,積累下去將導(dǎo)致嚴(yán)重的運轉(zhuǎn)錯誤。錯誤。7.2.2 畫畫 刷刷畫刷是用來填充圖形的工具。畫刷是用來填充圖形的工具。畫刷的屬性通常包括填充色、填充圖案和填充款式三畫刷的屬性通常包括填充色、填充圖案和填充款式三種。畫刷的填充色和畫筆顏色一樣,都是運用種。畫刷的填充色和畫筆顏色一樣,都是運用COLORREFCOLORREF顏色類型,畫刷的填充圖案通常是用戶定義的顏色類型,畫刷的填充圖案通常是用戶定義的8 x 88 x 8位圖,位圖,而填充款式往往是而填充款式往往是CDCCDC內(nèi)部定義的一些
38、特性,它們都是以內(nèi)部定義的一些特性,它們都是以HS_HS_為前綴的標(biāo)識,如下圖:為前綴的標(biāo)識,如下圖:HS_BDIAGONALHS_CROSSHS_DIAGCROSSHS_FDIAGONAL HS_HORIZONTAL HS_VERTICAL圖圖7.3 畫刷的填充款式畫刷的填充款式7.2.2 畫畫 刷刷MFCMFC把把GDIGDI畫刷封裝在畫刷封裝在CRushCRush類中。畫刷的運用方類中。畫刷的運用方法同畫筆。畫刷分為純色畫刷、陰影畫刷、堆畫刷法同畫筆。畫刷分為純色畫刷、陰影畫刷、堆畫刷和圖案畫刷。和圖案畫刷。CBrushCBrush類為不同的畫刷類型提供了不類為不同的畫刷類型提供了不同的
39、構(gòu)造函數(shù)。同的構(gòu)造函數(shù)。WindowsWindows定義的堆畫刷共有定義的堆畫刷共有7 7種,分別是:種,分別是:BLACK_BRUSHBLACK_BRUSH:黑色畫刷;:黑色畫刷;DKGRAY_BRUSHDKGRAY_BRUSH:深灰色畫刷;:深灰色畫刷;GRAY_BRUSHGRAY_BRUSH:灰色畫刷;:灰色畫刷;HOLLOW_BRUSHHOLLOW_BRUSH:空畫刷;:空畫刷;LTGRAY_BRUSHLTGRAY_BRUSH:淺灰色畫刷;:淺灰色畫刷;NULL_BRUSHNULL_BRUSH:空畫刷;:空畫刷;WHITE_BRUSHWHITE_BRUSH:白色畫刷;:白色畫刷;7.2
40、.2 畫畫 刷刷對堆畫刷,調(diào)用對堆畫刷,調(diào)用SelectStockObject()SelectStockObject()函數(shù)進(jìn)展函數(shù)進(jìn)展選擇畫刷,選擇畫刷,例如:例如:C B r u s h C B r u s h * * p O l d B r u s h = p D C - p O l d B r u s h = p D C - SelectStockObject(WHITE_BRUSH); SelectStockObject(WHITE_BRUSH); / / 選擇白色堆畫刷選擇白色堆畫刷 創(chuàng)建創(chuàng)建CBrushCBrush對象的四個構(gòu)造函數(shù)為:對象的四個構(gòu)造函數(shù)為:(1) CBrush(
41、); / (1) CBrush(); / 運用前必需初始化畫刷運用前必需初始化畫刷(2) CBrush (COLORREF cfColor); (2) CBrush (COLORREF cfColor); / / 構(gòu)造帶有指定顏色的純色畫刷構(gòu)造帶有指定顏色的純色畫刷如:如:CBrush Brush(RGB(255,0,0); / CBrush Brush(RGB(255,0,0); / 創(chuàng)建紅色畫創(chuàng)建紅色畫刷刷(3) CBrush(int nIndex, COLORREF cfColor);(3) CBrush(int nIndex, COLORREF cfColor); / / 構(gòu)造帶有指定
42、填充款式和顏色的填充畫刷構(gòu)造帶有指定填充款式和顏色的填充畫刷(4) CBrush(CBitmap(4) CBrush(CBitmap* *pBitmap);pBitmap); / / 構(gòu)造運用位圖圖案的畫刷構(gòu)造運用位圖圖案的畫刷 CBitmap CBitmap對象最大可運用對象最大可運用8 88 8像素,假設(shè)位圖過大,像素,假設(shè)位圖過大,那么只需左上角的部分可以用作畫刷圖案。那么只需左上角的部分可以用作畫刷圖案。7.2.3 繪繪 圖圖 示示 例例MFC為用戶的圖形繪制提供了為用戶的圖形繪制提供了許多函數(shù),這其中包括畫點、線、許多函數(shù),這其中包括畫點、線、矩形、多邊形、圓弧、橢圓、扇形矩形、多邊
43、形、圓弧、橢圓、扇形以及以及Bzier曲線等。曲線等。例:一個簡單圖形的繪制例如,例:一個簡單圖形的繪制例如,表示一個班級某門課程的成果分布,表示一個班級某門課程的成果分布,它是一個直方圖,反映它是一個直方圖,反映90五個分?jǐn)?shù)段的人數(shù),它需求繪五個分?jǐn)?shù)段的人數(shù),它需求繪制五個矩形,相鄰矩形的填充款式制五個矩形,相鄰矩形的填充款式還要有所區(qū)別,并且還需求顯示各還要有所區(qū)別,并且還需求顯示各分?jǐn)?shù)段的人數(shù)。分?jǐn)?shù)段的人數(shù)。Ex_Draw運轉(zhuǎn)結(jié)果運轉(zhuǎn)結(jié)果7.3 字體與文字處置字體與文字處置字體字體 字體定義顯示文本的符號和字符,經(jīng)過字體定義顯示文本的符號和字符,經(jīng)過處置字體可以顯示某種特殊效果的文字,處
44、置字體可以顯示某種特殊效果的文字,描畫輸出文字的字體可用描畫輸出文字的字體可用CFontCFont對象。對象。CFontCFont對象的運用方法與畫筆和畫刷類似,對象的運用方法與畫筆和畫刷類似,定義字體對象,定義字體對象,創(chuàng)建字體并保管原來的字體,創(chuàng)建字體并保管原來的字體,在文字輸出任務(wù)終了后恢復(fù)原來的字體。在文字輸出任務(wù)終了后恢復(fù)原來的字體。7.3.1 字體和字體對話框字體和字體對話框1.字體的屬性字體的屬性字體的主要屬性有字樣、風(fēng)格和尺寸。字樣是字字體的主要屬性有字樣、風(fēng)格和尺寸。字樣是字符書寫和顯示時表現(xiàn)的特定方式,如宋體、楷體等符書寫和顯示時表現(xiàn)的特定方式,如宋體、楷體等多種字樣。字體
45、風(fēng)格主要表現(xiàn)為字體的粗細(xì)和能否多種字樣。字體風(fēng)格主要表現(xiàn)為字體的粗細(xì)和能否傾斜等特點。字體是用來指定字體所占區(qū)域的大小,傾斜等特點。字體是用來指定字體所占區(qū)域的大小,通常用字符高度來描畫。通常用字符高度來描畫。2. 字體的創(chuàng)建字體的創(chuàng)建(1)為了方便用戶創(chuàng)建字體,系統(tǒng)定義一種邏輯為了方便用戶創(chuàng)建字體,系統(tǒng)定義一種邏輯字體,根據(jù)定義的邏輯字體,可調(diào)用字體,根據(jù)定義的邏輯字體,可調(diào)用CFont類的類的CreateFontIndirect函數(shù)來創(chuàng)建字體。函數(shù)來創(chuàng)建字體。(P217)typedef struct tagLOGFONT LONG lfHeight; / 字體的邏輯高度字體的邏輯高度 LO
46、NG lfWidth; / 字符的平均邏輯寬度字符的平均邏輯寬度 LONG lfEscapement; / 傾角傾角 LONG lfOrientation; / 書寫方向書寫方向 LONG lfWeight; / 字體的粗細(xì)程度字體的粗細(xì)程度 BYTE lfItalic; / 斜體標(biāo)志斜體標(biāo)志 BYTE lfUnderline; / 下劃線標(biāo)志下劃線標(biāo)志 BYTE lfStrikeOut; / 刪除線標(biāo)志刪除線標(biāo)志 BYTE lfCharSet; / 字符集,漢字必需為字符集,漢字必需為GB2312_CHARSET TCHAR lfFaceNameLF_FACESIZE / 字樣稱號字樣稱號/
47、 LOGFONT; 2 2字體的創(chuàng)建字體的創(chuàng)建(2)(2)當(dāng)需求某一特定的字體時,還可以運用當(dāng)需求某一特定的字體時,還可以運用MFCMFC的的CFontCFont類的類的CreateFont()CreateFont()成員函數(shù)來創(chuàng)建字體,假設(shè)成員函數(shù)來創(chuàng)建字體,假設(shè)該函數(shù)調(diào)用勝利,那么前往非該函數(shù)調(diào)用勝利,那么前往非0 0值,否那么前往值,否那么前往0 0。其函數(shù)原型如下:其函數(shù)原型如下:BOOL CFont:CreateFont(BOOL CFont:CreateFont(int nHeight, / int nHeight, / 字符邏輯高度字符邏輯高度int nWidth, / int
48、nWidth, / 字符邏輯寬度字符邏輯寬度int nEscapement, / int nEscapement, / 出口矢量與出口矢量與X X軸的角度軸的角度int nOrientation, / int nOrientation, / 字符基線與字符基線與X X軸的角度軸的角度int nWeight, / int nWeight, / 字體磅值字體磅值BYTE bItalic, / BYTE bItalic, / 非非0 0那么為斜體那么為斜體BYTE bUnderline, / BYTE bUnderline, / 非非0 0那么加下劃線那么加下劃線BYTE cStrickOut, /
49、 BYTE cStrickOut, / 非非0 0那么加刪除線那么加刪除線BYTE nCharSet, / BYTE nCharSet, / 此字體的字符集此字體的字符集BYTE nClipPrecision, / BYTE nClipPrecision, / 裁剪精度裁剪精度BYTE nQualty, / BYTE nQualty, / 輸出質(zhì)量輸出質(zhì)量BYTE nPitAndFamity, / BYTE nPitAndFamity, / 調(diào)距和字體族調(diào)距和字體族LPCSTR lpszFacenameLPCSTR lpszFacename;/ / 字體的字符名字體的字符名););Create
50、Font()CreateFont()成員函數(shù)并不能產(chǎn)生新的成員函數(shù)并不能產(chǎn)生新的Windows Windows GDIGDI字體,它只是從字體,它只是從GDIGDI字庫中選擇一種最近似的字庫中選擇一種最近似的可用字體。可用字體。2 2字體的創(chuàng)建字體的創(chuàng)建(2)(2)7.3.1 字體和字體對話框字體和字體對話框3. 運用字體對話框運用字體對話框CFontDialog類提供了字體及其文本顏色選擇的類提供了字體及其文本顏色選擇的通用對話框。通用對話框。 它的構(gòu)造函數(shù)如下:它的構(gòu)造函數(shù)如下:CFontDialog( LPLOGFONT lplfInitial = NULL, DWORD dwFlags
51、 = CF_EFFECTS |CF_SCREENFONTS, CDC* pdcPrinter = NULL, CWnd* pParentWnd = NULL );7.3.2 常用文本輸出函數(shù)常用文本輸出函數(shù)文本的最終輸出不僅依賴于文本的字體,而且還跟文文本的最終輸出不僅依賴于文本的字體,而且還跟文本的顏色、對齊方式等有很大關(guān)系。本的顏色、對齊方式等有很大關(guān)系。CDC類提供了類提供了4個個輸出文本的函數(shù)。輸出文本的函數(shù)。 (1)TextOut函數(shù)是用當(dāng)前字體在指定位置函數(shù)是用當(dāng)前字體在指定位置 (x,y) 處顯示一個文本。處顯示一個文本。 virtual BOOL TextOut(int x,i
52、nt y,LPCTSTR lpszString int nCount);BOOL TextOut(int x,int y,const CString & str);7.3.2 常用文本輸出函數(shù)常用文本輸出函數(shù)(2) TabbedTextOut也是用當(dāng)前字體在指定位置也是用當(dāng)前字體在指定位置處顯示一個文本,但它還根據(jù)指定的制表位處顯示一個文本,但它還根據(jù)指定的制表位(Tab)設(shè)設(shè)置相應(yīng)字符位置,函數(shù)勝利時前往輸出文本的大小。置相應(yīng)字符位置,函數(shù)勝利時前往輸出文本的大小。virtual CSize TabbedTextOut(int x,int y,LPCTSTR lpszString i
53、nt nCount,int nTabPositions,LPINT lpnTabStopPostions,int nTabOrigin);CSize TabbedTextOut(int x,int y,const CString &str,int nTabPositions,LPINT lpnTabStopPostions,int nTabOrigin);7.3.2 常用文本輸出函數(shù)常用文本輸出函數(shù)(3) DrawText函數(shù)是當(dāng)前字體在指定矩形中對函數(shù)是當(dāng)前字體在指定矩形中對文本進(jìn)展格式化繪制。文本進(jìn)展格式化繪制。 virtual int DrawText( LPCTSTR lpsz
54、String, int nCount, LPRECT lpRect, UINT nFormat );int DrawText( const CString& str, LPRECT lpRect, UINT nFormat );7.3.2 常用文本輸出例如常用文本輸出例如n繪制以下圖形繪制以下圖形(10,10)(200,140)20020停頓位為停頓位為40個單位個單位停頓位為停頓位為80個單位個單位停頓位為停頓位為默許值默許值在在C*View類的類的OnDraw(CDC *pDC)函數(shù)中函數(shù)中添加繪圖代碼:添加繪圖代碼:CRect rc(10, 10, 200, 140);pDC-R
55、ectangle( rc );pDC-DrawText( 單行文本居中單行文本居中, rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);在在C*View類的類的OnDraw(CDC *pDC)函數(shù)中函數(shù)中添加繪圖代碼:添加繪圖代碼:rc.OffsetRect( 200, 0 );/ 將矩形向右偏移將矩形向右偏移200pDC-Rectangle( rc );int nTab = 40; /將將Tab位的值指定為位的值指定為40個邏輯單位個邏輯單位pDC-TabbedTextOut( rc.left, rc, 繪制繪制tTabt文文本本t例如例如, 1, &a
56、mp;nTab, rc.left); / 運用自定義的停頓位運用自定義的停頓位(Tab)nTab = 80;pDC-TabbedTextOut( rc.left, rc+20, 繪制繪制tTabt文本文本t例如例如, 1, &nTab, rc.left); / 運用自定義的停頓位運用自定義的停頓位(Tab)pDC-TabbedTextOut( rc.left, rc+40, 繪制繪制tTabt文本文本t例如例如, 0, NULL, 0);/ 運用默許的停頓位運用默許的停頓位7.3.3 文本格式化屬性文本格式化屬性文本的格式屬性通常包括文本顏色、對齊方式、字文本的格式屬性通常包括文本顏色
57、、對齊方式、字符間隔以及文本調(diào)整等。在繪圖設(shè)備環(huán)境中,默許的符間隔以及文本調(diào)整等。在繪圖設(shè)備環(huán)境中,默許的文本顏色是黑色,而文本背風(fēng)光為白色,文本顏色是黑色,而文本背風(fēng)光為白色,在在CDC類中,類中,SetTextColor、SetBkColor和和SetBkMode函數(shù)就是分別用來設(shè)置文本顏色、文本函數(shù)就是分別用來設(shè)置文本顏色、文本背風(fēng)光和背景方式,而與之相對應(yīng)的背風(fēng)光和背景方式,而與之相對應(yīng)的GetTextColor、GetBkcolor和和GetBkMode函數(shù)那么是分別獲取這函數(shù)那么是分別獲取這三項屬性的。三項屬性的。SetTextAlign、GetTextAlign函數(shù)是設(shè)置和獲取函
58、數(shù)是設(shè)置和獲取文本對齊方式文本對齊方式(文本的對齊方式如文本的對齊方式如P221表表7.5所示所示)。7.3.3 文本格式化屬性文本格式化屬性virtual COLORREF SetTextColor( COLORREF crColor );COLORREF GetTextColor( ) const;virtual COLORREF SetBkColor( COLORREF crColor );COLORREF GetBkColor( ) const;int SetBkMode( int nBkMode );int GetBkMode( ) const;UINT SetTextAlign(U
59、INT nFlags);UINT GetTextAlign() const;7.3.4 計算字符的幾何尺寸計算字符的幾何尺寸在打印和顯示文本時,假設(shè)了解字符的高度在打印和顯示文本時,假設(shè)了解字符的高度計算及字符的丈量方式,能更好地控制文本輸出計算及字符的丈量方式,能更好地控制文本輸出效果。效果。在在CDC類中,類中,GetTextMetrics(LPTEXTMETRIC lpMetrics)函數(shù)是用來獲得指定映射方式下相關(guān)設(shè)備環(huán)境的函數(shù)是用來獲得指定映射方式下相關(guān)設(shè)備環(huán)境的字符幾何尺寸及其它屬性的。字符幾何尺寸及其它屬性的。7.3.4 計算字符的幾何尺寸計算字符的幾何尺寸typedef str
60、uct tagTEXTMETRIC int tmHeight; / 字符的高度字符的高度 int tmAscent; / 高于基準(zhǔn)線部分的值高于基準(zhǔn)線部分的值 int tmDescent; / 低于基準(zhǔn)線部分的值低于基準(zhǔn)線部分的值 int tmInternalLeading; / 字符內(nèi)標(biāo)高字符內(nèi)標(biāo)高 int tmExternalLeading; / 字符外標(biāo)高字符外標(biāo)高 int tmAveCharWidth; / 字體中字符平均寬度字體中字符平均寬度 int tmMaxCharWidth; / 字符的最大寬度字符的最大寬度 / TEXTMETRIC; 7.3.4 計算字符的幾何尺寸計算字符的幾何尺寸計算字符的幾何尺寸的方法:計算字符的幾何尺寸的方法:利用利用TEXTMETRIC類型變量的成員。類型變量的成員。如:計算字符的總高
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度規(guī)?;B(yǎng)殖場仔豬批發(fā)供應(yīng)合同
- 2025年不停電電源(UPS)項目建議書
- 加強倉庫庫存盤點的個人計劃
- 如何進(jìn)行有效的財務(wù)風(fēng)險評估計劃
- 優(yōu)化倉庫備件和配件庫存管理的個人計劃
- 2025年中大型重載軸承項目合作計劃書
- 七年級下冊《平移》課件與練習(xí)
- 智能門禁系統(tǒng)安裝合同
- 教師職稱評定育人工作證明
- Tricyclohexylphosphine-Tricyclohexylphosphane-生命科學(xué)試劑-MCE
- 水痘護(hù)理查房課件
- 離婚協(xié)議書常用范本2024年
- 2024年各地中考語文卷【綜合性學(xué)習(xí)題】匯集練附答案解析
- 基于CiteSpace患者旅程地圖的研究熱點與發(fā)展趨勢分析
- 中國高血壓防治指南(2024年修訂版)解讀-概述
- 2024年山東省東營市中考數(shù)學(xué)試題 (解析版)
- 高中數(shù)學(xué)必修一試卷和答案
- 2024年陜西西安亮麗電力集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 《臨安春雨初霽》課件+2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 教學(xué)樓設(shè)計國內(nèi)外研究現(xiàn)狀
- 2024年高考作文素材積累之6個議論文人物素材及運用示例
評論
0/150
提交評論