第6章-文本和字體_第1頁
第6章-文本和字體_第2頁
第6章-文本和字體_第3頁
第6章-文本和字體_第4頁
第6章-文本和字體_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 在在Windows操作系統(tǒng)中,使用設(shè)備上操作系統(tǒng)中,使用設(shè)備上下文不僅能對(duì)圖形圖像進(jìn)行處理,對(duì)文本下文不僅能對(duì)圖形圖像進(jìn)行處理,對(duì)文本也能進(jìn)行相應(yīng)的操作。也能進(jìn)行相應(yīng)的操作。 在在Windows應(yīng)用程序的編寫過程中,應(yīng)用程序的編寫過程中,對(duì)于文本和字體的處理是程序員應(yīng)該熟悉對(duì)于文本和字體的處理是程序員應(yīng)該熟悉掌握的知識(shí)點(diǎn)。掌握的知識(shí)點(diǎn)。 本章將講解如何使用本章將講解如何使用CDC類對(duì)文本和類對(duì)文本和字體進(jìn)行處理。字體進(jìn)行處理。文本函數(shù)文本函數(shù)6.1文本屬性文本屬性6.2字體字體6.36.1 文文 本本 函函 數(shù)數(shù) 在在CDC類中,常用的文本函數(shù)是類中,常用的文本函數(shù)是TextOut()、Dr

2、awText()、ExtTextOut()和和TabledTextOut()。 下面對(duì)這下面對(duì)這4個(gè)函數(shù)分別進(jìn)行詳細(xì)介紹。個(gè)函數(shù)分別進(jìn)行詳細(xì)介紹。 6.1.1 6.1.1 使用使用TextOutTextOut顯示文本顯示文本 調(diào)用調(diào)用CDC類的成員函數(shù)類的成員函數(shù)TextOut(),可,可以在指定位置顯示文本。以在指定位置顯示文本。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual BOOL TextOut( int x, int y, LPCTSTR lpszString, int nCount ); BOOL TextOut( int x, int y, const CString&a

3、mp; str ); 圖圖6.1 程序程序sample0601的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.1.2 6.1.2 使用使用DrawTextDrawText顯示指定格式文顯示指定格式文本本 DrawText()函數(shù)用于在指定的區(qū)域中函數(shù)用于在指定的區(qū)域中格式化文本。格式化文本。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual int DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat ); int DrawText( const CString& str, LPRECT lpRect, UINT nFo

4、rmat ); 圖圖6.2 程序程序sample0602的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.1.3 6.1.3 使用使用ExtTextOutExtTextOut顯示字符串顯示字符串 調(diào)用調(diào)用ExtTextOut()函數(shù)可以用當(dāng)前選用函數(shù)可以用當(dāng)前選用的字體,在指定的矩形區(qū)域內(nèi)顯示字符串。的字體,在指定的矩形區(qū)域內(nèi)顯示字符串。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths );

5、BOOL ExtTextOut( int x, int y, UINT nOptions, LPCRECT lpRect, const CString& str, LPINT lpDxWidths ); 圖圖6.3 程序程序sample0603的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.1.4 6.1.4 使用使用TabbedTextOutTabbedTextOut顯示字符串顯示字符串 使用使用TabbedTextOut()函數(shù)可以在指定函數(shù)可以在指定位置顯示字符串,并用指定的制表間距擴(kuò)位置顯示字符串,并用指定的制表間距擴(kuò)展展Tab制表位。制表位。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual C

6、Size TabbedTextOut( int x, int y, LPCTSTR lpszString, int nCount, int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin ); CSize TabbedTextOut( int x, int y, const CString& str, int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin );6.2 文文 本本 屬屬 性性 文本的屬性包括文本的對(duì)齊方式、字文本的屬性包括文本的對(duì)齊方式、字

7、符間距、映射模式以及文本的顏色和文本符間距、映射模式以及文本的顏色和文本的背景顏色等。的背景顏色等。 在上一節(jié)的示例中,使用的文本屬性在上一節(jié)的示例中,使用的文本屬性均為默認(rèn)設(shè)置。均為默認(rèn)設(shè)置。 下面對(duì)文本屬性的各個(gè)方面進(jìn)行詳細(xì)下面對(duì)文本屬性的各個(gè)方面進(jìn)行詳細(xì)介紹。介紹。6.2.1 6.2.1 對(duì)齊方式對(duì)齊方式 在在CDC類中,調(diào)用類中,調(diào)用SetTextAlign()函數(shù)函數(shù)可以設(shè)置文本的對(duì)齊方式??梢栽O(shè)置文本的對(duì)齊方式。 該函數(shù)的原型如下:該函數(shù)的原型如下: UINT SetTextAlign( UINT nFlags ); 其中,參數(shù)其中,參數(shù)nFlags表示用于指定文本表示用于指定文本

8、的對(duì)齊方式。的對(duì)齊方式。 該參數(shù)的常用取值如表該參數(shù)的常用取值如表6.2所示。所示。 調(diào)用調(diào)用GetTextAlign()函數(shù)可以獲取當(dāng)前函數(shù)可以獲取當(dāng)前文本的對(duì)齊方式。文本的對(duì)齊方式。 該函數(shù)的原型如下:該函數(shù)的原型如下: UINT GetTextAlign() const; 圖圖6.4 程序程序sample0605的運(yùn)行結(jié)果的運(yùn)行結(jié)果 6.2.2 6.2.2 字符間距字符間距 在在CDC類中,調(diào)用類中,調(diào)用SetTextCharacterExtra()函數(shù)可以設(shè)置字函數(shù)可以設(shè)置字符間距。符間距。 該函數(shù)的原型如下:該函數(shù)的原型如下: int SetTextCharacterExtra( i

9、nt nCharExtra ); 其中,參數(shù)其中,參數(shù)nCharExtra表示用于指定表示用于指定加入到每個(gè)字符串的額外間距值。加入到每個(gè)字符串的額外間距值。 如果想要獲取當(dāng)前的字符間距,可以如果想要獲取當(dāng)前的字符間距,可以調(diào)用調(diào)用GetTextCharacterExtra()函數(shù)。函數(shù)。 該函數(shù)的原型如下:該函數(shù)的原型如下: int GetTextCharacterExtra() const; 圖圖6.5 程序程序sample0606的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.2.3 6.2.3 背景模式背景模式 在在CDC類中,調(diào)用類中,調(diào)用SetBkMode()函數(shù)函數(shù)可以設(shè)置文本背景模式,確定文本輸出背可

10、以設(shè)置文本背景模式,確定文本輸出背景顏色的顯示方式。景顏色的顯示方式。 該函數(shù)的原型如下:該函數(shù)的原型如下: int SetBkMode( int nBkMode ); 如果想要獲取當(dāng)前文本的背景模式,如果想要獲取當(dāng)前文本的背景模式,可以調(diào)用可以調(diào)用GetBkMode()函數(shù)。函數(shù)。 該函數(shù)的原型如下:該函數(shù)的原型如下: int GetBkMode() const; 圖圖6.6 程序程序sample0607的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.2.4 6.2.4 文本顏色文本顏色 在在CDC類中,調(diào)用成員函數(shù)類中,調(diào)用成員函數(shù)SetTextColor()可以設(shè)置文本的顏色??梢栽O(shè)置文本的顏色。 該函數(shù)的原型

11、如下:該函數(shù)的原型如下: virtual COLORREF SetTextColor( COLORREF crColor ); 其中,參數(shù)其中,參數(shù)crColor用于設(shè)置輸出文本用于設(shè)置輸出文本的顏色,可以通過的顏色,可以通過RGB()函數(shù)指定。函數(shù)指定。 RGB()函數(shù)的原型如下:函數(shù)的原型如下: COLORREF RGB( BYTE bRed; BYTE bGreen, BYTE bBlue ); 如果想要獲取當(dāng)前文本的顏色,可以如果想要獲取當(dāng)前文本的顏色,可以調(diào)用調(diào)用GetTextColor()函數(shù)。函數(shù)。 該函數(shù)的原型如下:該函數(shù)的原型如下: COLORREF GetTextColor

12、() const; 圖圖6.7 程序程序sample0608的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.2.5 6.2.5 背景顏色背景顏色 在在CDC類中,調(diào)用成員函數(shù)類中,調(diào)用成員函數(shù)SetBkColor()可以設(shè)置文本的背景顏色。可以設(shè)置文本的背景顏色。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual COLORREF SetBkColor( COLORREF crColor ); 如果想要獲取當(dāng)前文本的顏色,可以如果想要獲取當(dāng)前文本的顏色,可以調(diào)用調(diào)用GetBkColor()函數(shù)。函數(shù)。 該函數(shù)的原型如下:該函數(shù)的原型如下: COLORREF GetBkColor() const; 圖圖6.8 程序

13、程序sample0609的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.2.6 6.2.6 字符屬性字符屬性 字符屬性是指字符的寬度、高度、字字符屬性是指字符的寬度、高度、字符的間距和行間距等。符的間距和行間距等。 在在MFC中,提供了一個(gè)中,提供了一個(gè)TEXTMETRIC結(jié)構(gòu)用于描述字符的屬性。結(jié)構(gòu)用于描述字符的屬性。 該結(jié)構(gòu)的原型如下:該結(jié)構(gòu)的原型如下: typedef struct tagTEXTMETRIC int tmHeight; int tmAscent; int tmDescent; int tmInternalLeading; int tmExternalLeading; int tmAveChar

14、Width; int tmMaxCharWidth; int tmWeight; BYTE tmItalic; BYTE tmUnderlined; BYTE tmStruckOut; BYTE tmFirstChar; BYTE tmLastChar; BYTE tmDefaultChar; BYTE tmBreakChar; BYTE tmPitchAndFamily; BYTE tmCharSet; int tmOverhang; int tmDigitizedASPectX; int tmDigitizedAspectY; TEXTMETRIC; 在在CDC類中,調(diào)用類中,調(diào)用GetT

15、extMetrics()可以獲取當(dāng)前使用字體的字符屬性??梢垣@取當(dāng)前使用字體的字符屬性。 該函數(shù)的原型如下:該函數(shù)的原型如下:BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const; 圖圖6.9 程序程序sample0610的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.3 字字 體體 在在Windows中,提供了一些字體,這中,提供了一些字體,這些字體被稱為庫(kù)存字體。些字體被稱為庫(kù)存字體。 在多數(shù)情況下,使用庫(kù)存字體就能滿在多數(shù)情況下,使用庫(kù)存字體就能滿足程序的要求。足程序的要求。 另外,用戶可以自定義字體來滿足程另外,用戶可以自定義字體來滿足程序的特殊要求。序的特殊

16、要求。6.3.1 6.3.1 使用庫(kù)存字體使用庫(kù)存字體 在在Windows中,其提供的庫(kù)存字體一中,其提供的庫(kù)存字體一共有共有6種,如表種,如表6.3所示。所示。 在程序的編寫過程中,用戶可以直接在程序的編寫過程中,用戶可以直接調(diào)用調(diào)用SelectStockObject ()函數(shù)將這些字體函數(shù)將這些字體選入設(shè)備上下文。選入設(shè)備上下文。 該函數(shù)的原型如下:該函數(shù)的原型如下: virtual CGdiObject* SelectStockObject( int nIndex ); 圖圖6.10 程序程序sample0611的運(yùn)行結(jié)果的運(yùn)行結(jié)果6.3.2 6.3.2 使用使用CreateFontCr

17、eateFont創(chuàng)建字體創(chuàng)建字體 在在MFC類庫(kù)中,提供了專門用于處理類庫(kù)中,提供了專門用于處理字體的類字體的類CFont。 通過通過CFont類可以實(shí)現(xiàn)自定義字體。類可以實(shí)現(xiàn)自定義字體。 調(diào)用調(diào)用CreateFont()函數(shù)就可以創(chuàng)建自函數(shù)就可以創(chuàng)建自定義字體。定義字體。 該函數(shù)的原型如下:該函數(shù)的原型如下: BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE

18、nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename ); 圖圖6.11 程序程序sample0612的運(yùn)行結(jié)果的運(yùn)行結(jié)果 6.3.3 6.3.3 使用使用CreateFontIndirectCreateFontIndirect創(chuàng)建字體創(chuàng)建字體 在在CDC類中,還可以使用類中,還可以使用CreateFontIndirect()函數(shù)來創(chuàng)建邏輯字體。函數(shù)來創(chuàng)建邏輯字體。 該函數(shù)的原型如下:該函數(shù)的原型如下: BOOL CreateFon

19、tIndirect( const LOGFONT* lpLogFont ); 其中,參數(shù)其中,參數(shù)lpLogFont指的是指的是LOGFONT結(jié)構(gòu)對(duì)象。結(jié)構(gòu)對(duì)象。 LOGFONT結(jié)構(gòu)的原型如下:結(jié)構(gòu)的原型如下: typedef struct tagLOGFONT LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecisio

20、n; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; TCHAR lfFaceNameLF_FACESIZE; LOGFONT; 圖圖6.12 程序程序sample0613的運(yùn)行結(jié)果的運(yùn)行結(jié)果小結(jié)小結(jié) 本章主要介紹了在本章主要介紹了在Windows中如何對(duì)中如何對(duì)文本和字體的處理。文本和字體的處理。 主要內(nèi)容包括文本函數(shù)、文本屬性和主要內(nèi)容包括文本函數(shù)、文本屬性和字體。字體。 其中,在用于輸出文本的函數(shù)眾多,請(qǐng)其中,在用于輸出文本的函數(shù)眾多,請(qǐng)讀者熟知各個(gè)函數(shù)的功能與相應(yīng)參數(shù)。讀者熟知各個(gè)函數(shù)的功能與相應(yīng)參數(shù)。 文本屬性

21、包括文本的對(duì)齊方式、字符文本屬性包括文本的對(duì)齊方式、字符間距、映射模式以及文本的顏色和文本的間距、映射模式以及文本的顏色和文本的背景顏色等。背景顏色等。 第第7章將要介紹對(duì)話框的相關(guān)知識(shí)。章將要介紹對(duì)話框的相關(guān)知識(shí)。上機(jī)指導(dǎo)上機(jī)指導(dǎo) 實(shí)驗(yàn)一:輸出顏色為紅色的字體實(shí)驗(yàn)一:輸出顏色為紅色的字體 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 創(chuàng)建一個(gè)單文檔的應(yīng)用程序創(chuàng)建一個(gè)單文檔的應(yīng)用程序TestOne,在里面輸出一行紅色的字體,運(yùn)行結(jié)果如在里面輸出一行紅色的字體,運(yùn)行結(jié)果如圖圖6.13所示。所示。 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?掌握文本的基本屬性,熟練地設(shè)置文掌握文本的基本屬性,熟練地設(shè)置文本的字體。本的字體。 圖圖6.13 實(shí)驗(yàn)一的運(yùn)行結(jié)果實(shí)驗(yàn)一的運(yùn)行結(jié)果 實(shí)現(xiàn)思路實(shí)現(xiàn)思路 在在6.2.3節(jié)中輸出了不是默認(rèn)顏色的字節(jié)中輸出了不是默認(rèn)顏色的字體。體。 本實(shí)驗(yàn)套用本實(shí)驗(yàn)套用6.2.3節(jié)的示例代碼即可。節(jié)的示例代碼即可。 實(shí)驗(yàn)二:使用庫(kù)存字體輸出文本,并測(cè)試實(shí)驗(yàn)二:使用庫(kù)存字體輸出文本,并測(cè)試字體的寬度和高度字體的寬度和高度 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 創(chuàng)建一個(gè)單文檔的應(yīng)用程序創(chuàng)建一個(gè)單文檔的應(yīng)用程序TestTwo,并選用一種庫(kù)存字體進(jìn)行文本輸出。并選用一種庫(kù)存字體進(jìn)行文本

溫馨提示

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

評(píng)論

0/150

提交評(píng)論