Visual C教學(xué)課件:第3章 文本與字體_第1頁(yè)
Visual C教學(xué)課件:第3章 文本與字體_第2頁(yè)
Visual C教學(xué)課件:第3章 文本與字體_第3頁(yè)
Visual C教學(xué)課件:第3章 文本與字體_第4頁(yè)
Visual C教學(xué)課件:第3章 文本與字體_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、教學(xué)重點(diǎn)1、文本設(shè)備環(huán)境 字體(系統(tǒng)、自定義)、文本顏色、背景色2、文本輸出基本操作 文本格式化、文本輸出函數(shù)第3章 文本與字體 Windows經(jīng)常使用GDI進(jìn)行文本輸出。在一定意義上,任何內(nèi)容都可以看成圖形實(shí)體,圖形和文本并沒(méi)有明顯的界限。使用定義好的與設(shè)備無(wú)關(guān)的字體集, Windows就能維護(hù)它的設(shè)備無(wú)關(guān)性,提供“所見(jiàn)即所得”的好處,即屏幕所見(jiàn)與設(shè)備輸出的文本是一樣的。 第3章 文本與字體 3.1 文本設(shè)備環(huán)境1、系統(tǒng)字體 字體:描述所要顯示的文本的大小、類(lèi)型和外形。 物理字體:是為特殊設(shè)備設(shè)計(jì)的,因而是設(shè)備相關(guān)的; 邏輯字體:定義的字符集是設(shè)備無(wú)關(guān)的,它可以精確標(biāo)度,因此得到廣泛應(yīng)用。第

2、3章 文本與字體 3.1 文本設(shè)備環(huán)境-系統(tǒng)字體 第3章 文本與字體 字體說(shuō)明ANSI_FIXED_FONTANSI標(biāo)準(zhǔn)的固定寬度的字體ANSI_VAR_FONTANSI標(biāo)準(zhǔn)的可變寬度的字體DEFAULT_GUI_FONT當(dāng)前GUI的默認(rèn)字體OEM_FIXED_FONT由標(biāo)準(zhǔn)原設(shè)備制造商(OEM)提供DEVICE_DEFAULT_FONT當(dāng)前圖形設(shè)備的字體SYSTEM_FIXED_FONTWindows的標(biāo)準(zhǔn)固定寬度的字體SYSTEM_FONTWindows提供的可變寬度的字體3.1 文本設(shè)備環(huán)境-系統(tǒng)字體選擇系統(tǒng)字體的步驟:(1) 定義字體句柄變量;(2) 調(diào)函數(shù)GetStockObject

3、獲得系統(tǒng)字體句柄,它返回的是系統(tǒng)的默認(rèn)字體;(3) 調(diào)用函數(shù)SelectObject將字體選入設(shè)備環(huán)境。 第3章 文本與字體 3.1 文本設(shè)備環(huán)境-系統(tǒng)字體程序舉例:HFONT hFont; / hFont為字體的句柄hFont = (HFONT)GetStockObject( SYSTEM_FIXED_FONT);SelectObject(hdc,hFont); 第3章 文本與字體 3.1 文本設(shè)備環(huán)境2、創(chuàng)建自定義字體可以調(diào)用函數(shù)CreateFont創(chuàng)建自定義字體。HFONT CreateFont( int nHeight, / 字體高度 int nWidth, / 字體寬度 int nE

4、scapement, / 行相對(duì)于頁(yè)底的角度 int nOrientation, / 字相對(duì)于頁(yè)底的角度 。第3章 文本與字體 3.1 文本設(shè)備環(huán)境-創(chuàng)建自定義字體 。 int fnWeight, / 字體粗細(xì)度,范圍為01000 DWORD fdwItalic, / 字體傾斜,則取非零 DWORD fdwUnderline, / 下劃線(xiàn),則取非零 DWORD fdwStrikeOut, / 中劃線(xiàn),則取非零 DWORD fdwCharSet, / 字體所屬字符集 。 第3章 文本與字體 3.1 文本設(shè)備環(huán)境-創(chuàng)建自定義字體 參數(shù)fnWeight可選的一些值如下所示: FW_NORMAL 40

5、0 FW_BOLD 700 FW_HEAVY 900 參數(shù)fdwCharSet定義的字符集有很多種,常用的有: ANSI_CHARSET、GB2312_CHARSET。 第3章 文本與字體 3.1 文本設(shè)備環(huán)境-創(chuàng)建自定義字體。DWORD fdwOutputPrecision, / 輸出精度DWORD fdwClipPrecision, / 剪裁精度DWORD fdwQuality, / 輸出質(zhì)量DWORD fdwPitchAndFamily,/字體間距及系列LPCTSTR lpszFace / 字體名);第3章 文本與字體 3.1 文本設(shè)備環(huán)境-創(chuàng)建自定義字體HFONT hFont; hFo

6、nt = CreateFont(20,0,0,0, FW_NORMAL, 0,0,0, GB2312_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH, “仿宋_GB2312”);SelectObject(hdc,hFont);第3章 文本與字體 3.1 文本設(shè)備環(huán)境-字體顏色設(shè)置字體顏色COLORREF SetTextColor( HDC hdc, COLORREF crColor / 字體顏色);程序舉例:SetTextColor(hdc, RGB(255,0,0);第3章 文本與

7、字體 3.1 文本設(shè)備環(huán)境-背景顏色設(shè)置背景顏色COLORREF SetBkColor( HDC hdc, COLORREF crColor / 背景顏色值);程序舉例:SetBkColor(hdc, RGB(255,255,255);第3章 文本與字體 3.2 文本的輸出過(guò)程(1)獲取字體信息;(2)格式化文本: 確定后續(xù)文本坐標(biāo); 確定換行時(shí)文本坐標(biāo);(3)調(diào)用函數(shù)輸出文本。 第3章 文本與字體 3.2 文本的輸出過(guò)程-獲取字體信息 輸出文本之前要獲取字體的信息,如字符高度等,以確定輸出格式和下一行字符的位置,可以調(diào)用下面的GetTextMetrics函數(shù)獲取當(dāng)前使用字體信息。第3章 文本

8、與字體 3.2 文本的輸出過(guò)程-獲取字體信息BOOL GetTextMetrics( HDC hdc, LPTEXTMETRIC lptm); 調(diào)用該函數(shù)時(shí),系統(tǒng)將當(dāng)前字體信息拷貝到tm標(biāo)識(shí)的TEXTMETRICS結(jié)構(gòu)中。第3章 文本與字體 3.2 文本的輸出過(guò)程-獲取字體信息typedef struct tagTEXTMETRIC LONG tmHeight; / 字符高度 LONG tmAscent;/ 字符基線(xiàn)以上高度LONG tmDescent; / 字符基線(xiàn)以下高度LONG tmInternalLeading;LONG tmExternalLeading;/ 行間距 。 第3章 文本

9、與字體 3.2 文本的輸出過(guò)程-獲取字體信息 。 LONG tmAveCharWidth;/ 平均字符寬度 LONG tmMaxCharWidth;/ 最大字符寬度 LONG tmWeight; / 字符的粗細(xì)度 LONG tmOverhang;/ 合成字體間附加寬度 LONG tmDigitizedAspectX; LONG tmDigitizedAspectY;第3章 文本與字體 3.2 文本的輸出過(guò)程-獲取字體信息。BCHAR tmFirstChar;/ 字體中第一個(gè)字符值BCHAR tmLastChar; / 字體中最后一個(gè)字符值BCHAR tmDefaultChar;/ 代替字體不支

10、持字符BCHAR tmBreakChar;/ 作為分隔符的字符BYTE tmItalic; / 非0則表示字體為斜體。 第3章 文本與字體 3.2 文本的輸出過(guò)程-獲取字體信息。BYTE tmUnderlined;/非0則表示字體有下劃線(xiàn)BYTE tmStruckOut; /非0則表示字符為中劃線(xiàn)BYTE tmPitchAndFamily; /字體間距和字體族BYTE tmCharSet; / 字符集TEXTMETRIC; 第3章 文本與字體 3.2 文本的輸出過(guò)程-獲取字體信息程序舉例: TEXTMETRIC tm; GetTextMetrics(hdc, &tm);第3章 文本與字體 3.

11、2 文本的輸出過(guò)程-格式化文本(續(xù)行) 確定后續(xù)文本坐標(biāo) 確定后續(xù)文本的坐標(biāo),應(yīng)先獲取當(dāng)前的字符串的寬度, 該工作由GetTextExtentPoint32函數(shù)完成,并把它存儲(chǔ)于一個(gè)SIZE結(jié)構(gòu)中。第3章 文本與字體 3.2 文本的輸出過(guò)程-格式化文本(續(xù)行)BOOL GetTextExtentPoint32( HDC hdc, LPCTSTR lpszString, / 指定的字符串 int nLength, / 字符串中的字符數(shù) LPSIZE lpSize);第3章 文本與字體 3.2 文本的輸出過(guò)程-格式化文本(續(xù)行)程序舉例:int cx0; / X軸起始坐標(biāo)為cx0int cx1;

12、/ 后續(xù)文本起始坐標(biāo)cx1SIZE sz;GetTextExtentPoint32(hdc,Hello,strlen(Hello),&sz);cx1 = cx0 + sz.cx;第3章 文本與字體 3.2 文本的輸出過(guò)程-格式化文本(換行) 字符的高度與行間隔均存儲(chǔ)在tm指向的TEXTMETRICS結(jié)構(gòu)體中,通過(guò)計(jì)算當(dāng)前行文本字符的高度與行間隔之和,即可得到換行時(shí)文本的起始坐標(biāo)。 第3章 文本與字體 3.2 文本的輸出過(guò)程-格式化文本(換行)程序舉例:int nLineHeight;TEXTMETRIC tm;GetTextMetrics(hdc, &tm);nLineHeight = tm.tmHeight + tm.tmExternalLeading;第3章 文本與字體 3.2 文本的輸出過(guò)程-文本輸出常用的文本輸出函數(shù)TextOut原型如下:BOOL TextOut( HDC hdc, int X, int Y,/ 用戶(hù)區(qū)中字符串的起始坐標(biāo) LPCTSTR lpString, / 顯示的字符串

溫馨提示

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

評(píng)論

0/150

提交評(píng)論