![VS2010MFC編程入門之四十七_(dá)第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/9e819124-ab11-4dd5-939c-f264ea78b895/9e819124-ab11-4dd5-939c-f264ea78b8951.gif)
![VS2010MFC編程入門之四十七_(dá)第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/9e819124-ab11-4dd5-939c-f264ea78b895/9e819124-ab11-4dd5-939c-f264ea78b8952.gif)
![VS2010MFC編程入門之四十七_(dá)第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/9e819124-ab11-4dd5-939c-f264ea78b895/9e819124-ab11-4dd5-939c-f264ea78b8953.gif)
![VS2010MFC編程入門之四十七_(dá)第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/9e819124-ab11-4dd5-939c-f264ea78b895/9e819124-ab11-4dd5-939c-f264ea78b8954.gif)
![VS2010MFC編程入門之四十七_(dá)第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/9/9e819124-ab11-4dd5-939c-f264ea78b895/9e819124-ab11-4dd5-939c-f264ea78b8955.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、CFontVS2010MFC 編程入門之四十七(字體和文本輸出:字體類)字體簡介GDI(Graphics Device Interface) ,圖形設(shè)備接口,是 Windows 提供的一些函數(shù)和結(jié)構(gòu),用于在顯 示器和打印機(jī)上顯示圖形。我們在 MFC 開發(fā)中經(jīng)常會使用 GDI 來輸出文本或圖形圖像(當(dāng)然現(xiàn)在也有了 GDI+ ,本教 程主要講解 GDI )。文本實(shí)際上就是一種特殊的圖形,它只 不過是根據(jù)事先指定的“字體”繪制出來的圖形。 字體 通常用來為字符集中每一個(gè)字符,如字母、數(shù)字、標(biāo)點(diǎn)符號 等,指定其形狀等外表特征。窗口創(chuàng)建后,如果沒有專門指 定,一般會采用系統(tǒng)字體作為默認(rèn)字體。我們可以使用
2、 API 函數(shù) GetStockObject(SYSTEM_FONT) 獲得系統(tǒng)字體的句 柄。 CFont 類 CFont 類封裝了一個(gè) Windows 圖形設(shè)備接口 (GDI )字體,并為操作字體提供了成員函數(shù)。 為了使用 CFont 對象,首先構(gòu)造一個(gè) CFont 對象,再通過調(diào) 用 CreateFont 、 CreateFontIndirect 、 CreatePointFont 或 CreatePointFontIndirect 將一個(gè) Windows 字體與此 CFont 對象關(guān)聯(lián), 然后使用此 CFont 對象的成員函數(shù)就可以操作字 體了。 一般使用 CreatePointFont
3、 或 CreatePointFontIndirect 比使用 CreateFont 或 CreateFontIndirect 要更簡便,因?yàn)榍皟烧邥詣拥膶⒆煮w高度的單位由點(diǎn)轉(zhuǎn)換為邏輯單位。 注:“點(diǎn)”是傳統(tǒng)計(jì) 量字大小的單位 , 是從英文 Point 來的 ,一般用小寫 p 表示 ,俗 稱“磅”。其換算關(guān)系為:1p = 0.35146mm 0.35mm,1英寸=72p。先簡單解釋下下面用到的幾個(gè)概念:設(shè)備上下文是包含某個(gè)設(shè)備(如顯示器、打印機(jī))的繪制屬 性信息的 Windows 數(shù)據(jù)結(jié)構(gòu), 有了它就可以在 Windows 中 進(jìn)行與設(shè)備無關(guān)的繪圖,而不用考慮此設(shè)備是顯示器還是打 印機(jī)等。 C
4、DC 類就是設(shè)備上下文類。在繪圖時(shí)還經(jīng)常會提到邏輯和物理, 例如邏輯單位、 物理單位, 通俗點(diǎn)說, 邏輯的就是與具體設(shè)備無關(guān)的,甚至我們可以自定義,物理 的就是由具體設(shè)備決定的了。CFont 類為字體的操作提供了幾個(gè)成員函數(shù),下面是對其各個(gè)成員函數(shù)的詳細(xì)介 紹。1 、CFont( );構(gòu)造一個(gè) CFont 對象。此對象在使用之前應(yīng)該先使用 CreateFont 、CreateFontIndirect 、 CreatePointFont 或 CreatePointFontIndirect 初始化。2、 BOOL CreateFont(int nHeight,int nWidth,int nEsc
5、apement,int nOrientation,int nWeight,BYTE bItalic,BYTE bUnderline,BYTE cStrikeOut,BYTE nCharSet,BYTE nOutPrecision,BYTE nClipPrecision,BYTE nQuality,BYTE nPitchAndFamily,LPCTSTR lpszFacename); 通過指定的一些特征初始化 CFont 對象。下面分別 介紹每個(gè)參數(shù):nHeight :指定字體高度(邏輯單位) 。有三種取值: >0 ,字體映射器將高度值轉(zhuǎn)換為設(shè)備單位, 并與可用字體的字符元高度進(jìn)行匹配;
6、=0 ,字體映射器使用 默認(rèn)的高度值; <0 ,字體映射器將高度值轉(zhuǎn)換為設(shè)備單位, 用其絕對值與可用字體的字符高度進(jìn)行匹配。 nHeight 轉(zhuǎn)換 后的絕對值不應(yīng)超過 16384 個(gè)設(shè)備單位。 nWidth : 指定字體中字符的平均寬度(邏輯單位) 。nEscapement :指定偏離垂線和顯示界面 X 軸之間的角度, 以十分之一度為單位。偏離垂線是穿過一行文本中第一個(gè)字 符和最后一個(gè)字符的直線。 nOrientation :指定每個(gè) 字符的基線和設(shè)備 X 軸之間的角度,以十分之一度為單位nWeight :指定字體磅數(shù)(每 1000 點(diǎn)中墨點(diǎn)像素?cái)?shù)) ??扇?0 到 1000 之間的任意
7、整數(shù)值。 bItalic :指定字體是 否為斜體。 bUnderline :指定字體是否帶有下劃線。 bStrikeOut :指定字體是否帶有刪除線。 nCharSet : 指定字體的字符集。預(yù)定義的字符集:ANSI_CHARSET;BALTIC_CHARSET;CHINESEBIG5_CH ARSET;DEFAULT_CHARSET;EASTEUROPE_CHARSET; GB2312_CHARSET;GREEK_CHARSET;HANGUL_CHARSET;MAC_CHARSET; OEM_CHARSET; RUSSIAN_CHARSET; SHIFTJIS_CHARSET;SYMBOL_
8、CHARSET;TURKISH_CHARSET 。韓國 Windows :JOHAB_CHARSET 中東地區(qū) Windows : HEBREW_CHARSSET , ARABIC_CHARSET ;泰國 Windows : THAI_CHARSET 。 應(yīng)用程序可以使用 DEFAULT_CHARSET 以允許字體名和 大小完全指定邏輯字體,如果指定的字體名不存在則可能會 用任意字符集的字體來代替,所以為避免不可預(yù)料的結(jié)果, 應(yīng)謹(jǐn)慎使用 DEFAULT_CHARSET 。 nOutPrecision : 指定輸出精度。輸出精度定義了輸出與要求的字體高度、寬 度、字符方向、移位和間距等的接近程度
9、。它的取值及含義 如下(只能取其一) :OUT_CHARACTER_PRECIS ;未用。OUT_DEFAULT_PRECIS :指定缺省的字體映射器 狀態(tài)。OUT_DEVICE_PRECIS :在當(dāng)系統(tǒng)里有多種字體使 用同一個(gè)名字時(shí)指示字體映射器選擇一種設(shè)備字體。OUT_OUTLINE_PRCIS :在 Windows NT 中此值指 示字體映射器從 TrueType 和其他基于邊框的字體中選擇。OUT_RASTER_PRECIS :在當(dāng)系統(tǒng)里有多種字體使 用同一個(gè)名字時(shí)指示字體映射器選擇一種光柵字體。OUT_STRING_PRECIS :此值沒有被字體映射器使 用,但是當(dāng)列舉光柵字體時(shí)它會
10、被返回。OUT_STROKE_PRECIS :沒有被字體映射器使用, 但是當(dāng)列舉 TrueType 字體、其他基于邊框的字體和向量字 體時(shí)它會被返回。OUT_TT_ONLY_PRECIS :指示字體映射器僅從 TrueType 字體中選擇, 如果系統(tǒng)中沒有安裝 TrueType 字體, 則字體映射返回缺省狀態(tài)。OUT_TT_PRECIS :在當(dāng)系統(tǒng)里有多種同名的字體 時(shí)指示字體映射器選擇一種 TrueType 字體。當(dāng)操作系統(tǒng)含 有多種與指定名字同名的字體時(shí),應(yīng)用程序可以使用 OUT_DEVICE_PRECIS , OUT_RASTER_PRECIS 和 OUT_TT_PRECIS 值來控制字
11、體映射器如何選擇一種字體, 例如,如果操作系統(tǒng)含有名字 Symbol 的光柵和 TrueType 兩種字體,指定 OUT_TT_PRECIS 使字體映射器選擇 TrueType 方式(指定 OUT_TT_ONLY_PRECIS 強(qiáng)制字體映射器選擇一種 TrueType 字體,盡管這會給 TrueType 字體 換一個(gè)名字) 。 nClipPrecision :指定裁剪精度。 裁剪 精度定義了怎樣裁剪部分超出裁剪區(qū)域的字符。它的取值及 含義如下(可取一個(gè)或多個(gè)值) : CLIP_DEFAULT_PRECIS :指定缺省裁剪狀態(tài)。CLIP_CHARACTER_PRECIS :未用。CLIP_STR
12、OKE_PRECIS :未被字體映射器使用, 但是當(dāng)列舉光柵字體、向量字體或 TrueType 字體時(shí)它會被 返回。在 Windows 環(huán)境下,為保證兼容性,當(dāng)列舉字體時(shí) 這個(gè)值總被返回。CLIP_MASK :未用。CLIP_EMBEDDED :要使用嵌入式只讀字體必須使 用此標(biāo)志。CLIP_LH_ANGLES :當(dāng)此值被使用時(shí),所有字體的 旋轉(zhuǎn)依賴于坐標(biāo)系統(tǒng)的定位是朝左的還是朝右的。如果未使 用此值,設(shè)備字體總是逆時(shí)針方向旋轉(zhuǎn),但其他字體的旋轉(zhuǎn) 依賴于坐標(biāo)系統(tǒng)的定向。CLIP_TT_ALWAYS :未用。 nQuality :指定 字體的輸出質(zhì)量。 輸出質(zhì)量定義了 GDI 將邏輯字體屬性匹配
13、 到實(shí)際物理字體的細(xì)致程度。它的各個(gè)取值及含義如下(取 其一): DEFAULT_QUALITY :字體的外觀不重要。DRAFT_QUALITY :字體外觀的重要性次于使用PROOF_QUALITY 時(shí),對 GDI 光柵字體,縮放比例是活動 的,這意味著多種字體大小可供選擇,但質(zhì)量可能不高,如 果有必要,粗體、斜體、下劃線、 strikeout 字體可被綜合起 來使用。PROOF_QUALITY :字符質(zhì)量比精確匹配邏輯字體 字體屬性更重要。對 GDI 掃描字體,縮放比例是活動的,并 選擇最接近的大小。盡管當(dāng)使用 PROOF_QUALITY 時(shí),選 擇字體大小并不完全匹配,但字體的質(zhì)量很高,并
14、沒有外觀 上的變形。如果有必要,粗體、斜體、下劃線、 strikeout 字 體可被綜合起來使用。 nPitchAndFamily :指定字 體間距和字體族。低 2 位用來指定字體的間距,可取下列值 中的一個(gè): DEFAULT_PITCH , FIXED_PITCH , VARIABLE_PITCH 。高 4 位指定字體族, 取值及含義如下 (取 其一): FF_DECORATIVE :新奇的字體,如老式英 語( Old English )。FF_DONTCARE :不關(guān)心或不知道。FF_MDERN :筆劃寬度固定的字體, 有或者無襯線。 如 Pica 、 Elite 和 Courier Ne
15、w 。FF_ROMAN :筆劃寬度變動的字體,有襯線。如 MS Serif 。FF_SCRIPT :設(shè)計(jì)成看上去象手寫體的字體。如Script 和 Cursive 。FF_SWISS :筆劃寬度變動的字體,無斜線。如 MSSans Serif 。 應(yīng)用程序可以用運(yùn)算符 OR 將字 符間距和字體族組合起來給 nPitchAndFamily 賦值。 字體族描述一種字體的普通外觀,當(dāng)所有的精確字樣都不能 使用時(shí),可用它們來指定字體。 lpszFacename :指 定字體的字樣名的字符串。此字符串的長度不應(yīng)超過 30 個(gè) 字符。 Windows 函數(shù) EnumFontFamilies 可以枚舉出當(dāng)前
16、所 有可用字體的字樣名。 如果 lpszFacename 為 NULL ,則 GDI 使用一種與設(shè)備無關(guān)的字體。 返回值:此函數(shù)成功 則返回 TRUE ,否則返回 FALSE 。 CreateFont 函數(shù) 初始化 CFont 對象后, 此字體就能夠被選作任何設(shè)備上下文 的字體了。此函數(shù)并不會創(chuàng)建一個(gè)新的 Windows GDI 字體, 只是從 GDI 的物理字體中選擇了一個(gè)最匹配的字體。 在創(chuàng)建 一個(gè)邏輯字體時(shí),大部分參數(shù)可以使用默認(rèn)值,但一般情況 下都會給出參數(shù) nHeight 和 lpszFacename 的指定值,如果 沒有給 nHeight 和 lpszFacename 參數(shù)設(shè)定取值
17、,則創(chuàng)建的 邏輯字體與設(shè)備相關(guān)。當(dāng)使用 CreateFont 函數(shù)初始化一個(gè) CFont 對象完成后,就能夠使用 CDC:SelectObject 函數(shù)來 為設(shè)備上下文選擇字體了,并且還能夠在不再使用此 CFont 對象時(shí)刪除它。3、 BOOL CreateFontIndirect(constLOGFONT* lpLogFont);通過一個(gè) LOGFONT 結(jié)構(gòu) 體變量給出的特征來初始化 CFont 對象。 參數(shù) lpLogFont 是指向 LOGFONT 結(jié)構(gòu)體變量的指針,此 LOGFONT 結(jié)構(gòu)體 變定義了邏輯字體的特征。 LOGFONT 結(jié)構(gòu)體的定義可以參 見 VS2010/MFC 編程
18、入門之十八(對話框:字體對話框) 。 4、 BOOL CreatePointFont(int nPointSize,LPCTSTR lpszFaceName,CDC* pDC = NULL); 此函數(shù)提供了 一種由指定字樣和點(diǎn)數(shù)創(chuàng)建字體的簡單方式。參數(shù)的意義如 下: nPointSize :指定字體高度,以十分之一點(diǎn)為單 位。例如, nPointSize 為 120 則表示是 12 點(diǎn)的字體。 lpszFacename :指定字體的字樣名的字符串。此字符串的 長度不應(yīng)超過 30個(gè)字符。Windows函數(shù)EnumFontFamilies 可以枚舉出當(dāng)前所有可用字體的字樣名。如果 lpszFacename 為 NULL ,則 GDI 使用一種與設(shè)備無關(guān)的字 體。pDC :指向 CDC 對象,用來將 nPointSize 指定的高度轉(zhuǎn)換為邏輯單位,如果為 NULL ,則使用屏幕設(shè)備上 下文進(jìn)行
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年殺蟲殺螨混劑合作協(xié)議書
- 2025年消霧塔合作協(xié)議書
- 2025年谷物生產(chǎn)合作協(xié)議書
- 2025年平板型太陽熱水器合作協(xié)議書
- 2025年企業(yè)合同信用管理工作個(gè)人總結(jié)(三篇)
- 2025年個(gè)人項(xiàng)目投資合同(2篇)
- 2025年五年級下冊班主任工作總結(jié)(二篇)
- 2025年五年級語文上教學(xué)工作總結(jié)(二篇)
- 2025年五金建材購銷合同參考樣本(五篇)
- 2025年二手房購買協(xié)議標(biāo)準(zhǔn)版本(三篇)
- 麻風(fēng)病防治知識培訓(xùn)課件
- 化工企業(yè)重大事故隱患判定標(biāo)準(zhǔn)培訓(xùn)考試卷(后附答案)
- 工傷賠償授權(quán)委托書范例
- 食堂餐具炊具供貨服務(wù)方案
- 員工安全健康手冊
- 自然科學(xué)基礎(chǔ)(小學(xué)教育專業(yè))全套教學(xué)課件
- 華為客服制度
- 醫(yī)美面部抗衰老注射項(xiàng)目培訓(xùn)課件
- 小學(xué)語文閱讀教學(xué)落實(shí)學(xué)生核心素養(yǎng)方法的研究-中期報(bào)告
- 電梯使用轉(zhuǎn)讓協(xié)議書范文
- 工程變更履歷表
評論
0/150
提交評論