第10章 字體與文本

上傳人:hjk****65 文檔編號(hào):203998720 上傳時(shí)間:2023-04-25 格式:PPT 頁(yè)數(shù):22 大小:64.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
第10章 字體與文本_第1頁(yè)
第1頁(yè) / 共22頁(yè)
第10章 字體與文本_第2頁(yè)
第2頁(yè) / 共22頁(yè)
第10章 字體與文本_第3頁(yè)
第3頁(yè) / 共22頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《第10章 字體與文本》由會(huì)員分享,可在線閱讀,更多相關(guān)《第10章 字體與文本(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第10章 字體與文本顯示圖形系統(tǒng)中為了獲得當(dāng)前運(yùn)行程序的相關(guān)信息,往往需要在屏幕上顯示文本,D3D 的功能擴(kuò)展ID3DXFont()對(duì)此提供了方便的解決方法。.二維文本繪制通過(guò)D3D功能對(duì)象ID3DXFont可以繪制文本,主要使用:ID3DXfont:DrawText()和ID3DXFont:GetDevice()函數(shù)。1.創(chuàng)建ID3DXFont對(duì)象使用接口ID3DXFont繪制文本,首先需要通過(guò)函數(shù)D3DXCreateFont()函數(shù)通過(guò)Windows字體和D3D設(shè)備指針創(chuàng)建ID3DXFont對(duì)象。ID3DXCreateFont()函數(shù)聲明HRESULT D3DXCreateFont(LPD

2、IRECT3DDEVICE9 pDevice,INT Height,UINT Width,UINT Weight,UINT MipLevels,BOOL Italic,DWORD CharSet,DWORD OutputPrecision,WORD Quality,DWORD PitchAndFamilyLPCTSTR pFacename,LPD3DXFONT*ppFont);ID3DXCreateFont()函數(shù)參數(shù)說(shuō)明pDevice:表示一個(gè)有效的D3D設(shè)備指針Height:表示創(chuàng)建字體的邏輯高度,如果等于則使用字體的默認(rèn)高度。Width:表示創(chuàng)建字體的平均邏輯寬度,如果等于,則使用字體的

3、默認(rèn)寬度。Weight、MipLevelsItalic:表示字體的權(quán)輿和過(guò)濾屬性,一般取默認(rèn)值0。CharSet:表示創(chuàng)建字體所屬的字符集合,如果設(shè)為D3FAULT_CHARSET,則函數(shù)將自動(dòng)尋找與指定字體相符的字符集合。ID3DXCreateFont()函數(shù)參數(shù)說(shuō)明(續(xù))OutputPrecision:指定字符的輸出精度,通常情況下將該值設(shè)為OUT_DEFAULT_PRECIS。Quality:指定字符的輸出質(zhì)量,通常情況下將該值設(shè)為D3FAULT_QUALITY。PitchAndFamily:指定字休的索引號(hào)pFaceName是指向表示字體名稱的字符串。ppFont:存儲(chǔ)新創(chuàng)建的字體指針

4、。通過(guò)Arial字體創(chuàng)建一個(gè)ID3DXFont對(duì)象LPD3DXFONT g_pFont =0;if(FAILED(D3DXCreateFont(g_pd3dDevice,0,0,0,0,0,0,0,0,LArial,&g_pFont)return E_FAIL;2.使用ID3DXFont對(duì)象繪制二維文本創(chuàng)建了ID3DXFont對(duì)象后,就可以使用其接口函數(shù)ID3DXFont:DrawText()在指定位置繪制二維文本。該函數(shù)支持ANSI雙字節(jié)字符串。ID3DXFont:DrawText()函數(shù)聲明INT ID3DXFont:DrawText(LPD3DXSPRITE pSprite,LPCSTR

5、 pSting,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color);ID3DXFont:DrawText()參數(shù)說(shuō)明pSprite:指定字符串所屬的ID3DXSprite對(duì)象接口,可置為默認(rèn)值為,表示在當(dāng)前窗口繪制字符串。pSting:指定將要繪制的字符串。Count:指定繪制字符的個(gè)數(shù),如果等于-1,則函數(shù)將自動(dòng)繪制到字符串結(jié)束為止。pRect:指定繪制字符串的矩形區(qū)域位置。Format:指定字符串在pRect指定的矩形區(qū)域內(nèi)的擺放屬性,這些屬性可以通過(guò)位去處“或”(|)聯(lián)合使用。Color:指定字符串的顏色值,屬于D3DCOLOR結(jié)構(gòu)。常

6、用字符串排放屬性擺放屬性說(shuō)明DT_BOTTOM字符串位于pRect的底部,該心性只能與DT_SINGLELINE共存DT_CALCRECT 根據(jù)字符串的長(zhǎng)度更改pRect指定的矩形區(qū)域的大小。DT_CENTER字符串位pRect的水平居中DT_LEFT字符串向pRect的左邊對(duì)齊DT_NOCLIP不對(duì)字符串進(jìn)行裁剪常用字符串排放屬性(續(xù)表)擺放屬性說(shuō)明DT_RIGHT字符串向pRect右方對(duì)齊DT_SINGLELINE 將字符串單行顯示,忽略換行標(biāo)記。DT_TOP字符串位于pRect的頂端DT_VCENTER字符串位于pRect垂直居中下列代碼在窗口客戶區(qū)中央顯示一行白色的文字:Welcome

7、 Direct3D!WCHAR*strText =LWelcome Direct3D!;g_pFont-DrawText(NULL,strText,(int)wcslen(strText),&clientRect,DT_SINGLELINE|DT_NOCLIP|DT_CENTER|DT_VCENTER,0 xffffffff);3.ID3DXFont其他相關(guān)接口函數(shù)函數(shù)ID3DXFont:GetDevice()能夠獲得與ID3DXFont相關(guān)聯(lián)的D3D設(shè)備指針,該函數(shù)聲明如下:.三維文本繪制1.創(chuàng)建三維文本網(wǎng)格模型在D3D中,三維物體的顯示是通過(guò)網(wǎng)格模型來(lái)實(shí)現(xiàn)的,顯示三維物體的關(guān)鍵在于生成該網(wǎng)

8、格模型。三維文本也不例外,顯示三維文本同樣需要該文本所對(duì)應(yīng)的網(wǎng)格模型。D3D為此提供了功能庫(kù)函數(shù)D3DXCreateText(),它可以方便地創(chuàng)建一個(gè)包含具體文本的網(wǎng)格模型。D3DXCreateText()聲明HRESULT D3DXCreateText(LPDIRECT3DDEVICE9pDevice,HDC hDC,LPCTSTR pText,FLOAT Deviation,FLOAT Extrusion,LPD3DXMESH*ppMesh,LPD3DXBUFFER*ppAdjacency,LPGLYPHMETERICSFLOAT pGlyphMetrics)D3DXCreateText(

9、)參數(shù)說(shuō)明LpDevice:用于創(chuàng)建網(wǎng)格的3D設(shè)備指針hDC:表示設(shè)備描述表。pText:指定具體文本字符串Deviation:指定弦偏差的最大值。Extrusion:指定文本在z軸負(fù)方向突出的總量。ppMesh:指向生成字體網(wǎng)格模型地址的指針。ppAdjacency:指向包含相關(guān)輸出信息緩沖區(qū)的指針,可以為NULL。pGlyphMetrics:指向GLYPHMETRICSFLOAT結(jié)構(gòu)體數(shù)組指,該數(shù)組可以包括所有字符的相關(guān)數(shù)據(jù)。創(chuàng)建文本“三維字體”的網(wǎng)格模型的代碼/創(chuàng)建設(shè)備描述表HDC hdc=CreateCompatibleDC(NULL);if(hdc=NULL)return E_OUT

10、OFMEMORY;/創(chuàng)建字體HFONT hFont=CreateFont(0,0,0,0,FW_BOLD,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,LArial);/將字體選進(jìn)設(shè)備描述表SelectObject(hdc,hFont);2.繪制三維文本網(wǎng)格模型創(chuàng)建好文本的網(wǎng)格模型之后,就可以使用ID3DXMesh的接口函數(shù)DrawSubset()將其繪制出來(lái),在繪制之前需要注意設(shè)置合適的世界矩陣,這時(shí)雖然是繪制

11、三維文本,但實(shí)質(zhì)上就是繪制一個(gè)三維物體,所以為三維文本設(shè)置世界矩陣是必不可少的。繪制三維文本的代碼片段VOID SetWorldMatrix()/創(chuàng)建并設(shè)置世界矩陣 D3DXMATRIX matWorld;D3DXMATRIX matTrans;D3DXMatrixTranslation(&matWorld,-1.75f,0.0f,0.0f);/平移 g_pd3dDevice-SetTransform(D3DTS_WORLD,&matWorld);pTextMesh-DrawSubset(0);小結(jié)文本繪制是圖形程序設(shè)計(jì)中不可或缺的一部分,正確適當(dāng)?shù)剡M(jìn)行文本繪制在圖形程序設(shè)計(jì)中具有非常重要的實(shí)際意義。本章通過(guò)兩個(gè)示例程序詳細(xì)介紹了在D3D中如何進(jìn)行二維和三維文本的繪制。二信字體的顯示比較簡(jiǎn)單,可以結(jié)合示例程序進(jìn)一步加深理解。三維字體的顯示關(guān)鍵在于構(gòu)造出字符串所對(duì)應(yīng)的網(wǎng)格模型,然后在場(chǎng)景中渲染該三維模型即可。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!