字體與文本.ppt_第1頁
字體與文本.ppt_第2頁
字體與文本.ppt_第3頁
字體與文本.ppt_第4頁
字體與文本.ppt_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、均邏輯寬度,如果等于,則使用字體的默認寬度。 Weight、MipLevelsItalic:表示字體的權輿和過濾屬性,一般取默認值0。 CharSet:表示創(chuàng)建字體所屬的字符集合,如果設為D3FAULT_CHARSET,則函數(shù)將自動尋找與指定字體相符的字符集合。,ID3DXCreateFont()函數(shù)參數(shù)說明(續(xù)),OutputPrecision:指定字符的輸出精度,通常情況下將該值設為OUT_DEFAULT_PRECIS。 Quality:指定字符的輸出質量,通常情況下將該值設為D3FAULT_QUALITY。 PitchAndFamily:指定字休的索引號 pFaceName是指向表示字體

4、名稱的字符串。 ppFont:存儲新創(chuàng)建的字體指針。,通過Arial字體創(chuàng)建一個ID3DXFont對象,LPD3DXFONT g_pFont = 0; if (FAILED(D3DXCreateFont( g_pd3dDevice, ,0,0,0,0,0,0,0,0, LArial, ,使用ID3DXFont對象繪制二維文本,創(chuàng)建了ID3DXFont對象后,就可以使用其接口函數(shù)ID3DXFont:DrawText()在指定位置繪制二維文本。該函數(shù)支持ANSI雙字節(jié)字符串。,ID3DXFont:DrawText()函數(shù)聲明,INT ID3DXFont:DrawText( LPD3DXSPRITE

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

6、lor:指定字符串的顏色值,屬于D3DCOLOR結構。,常用字符串排放屬性,常用字符串排放屬性(續(xù)表),下列代碼在窗口客戶區(qū)中央顯示一行白色的文字:Welcome Direct3D!,WCHAR* strText = LWelcome Direct3D!; g_pFont-DrawText(NULL, strText, (int)wcslen(strText), ,ID3DXFont其他相關接口函數(shù),函數(shù)ID3DXFont:GetDevice()能夠獲得與ID3DXFont相關聯(lián)的D3D設備指針,該函數(shù)聲明如下:,. 三維文本繪制,創(chuàng)建三維文本網(wǎng)格模型,在D3D中,三維物體的顯示是通過網(wǎng)格模型

7、來實現(xiàn)的,顯示三維物體的關鍵在于生成該網(wǎng)格模型。三維文本也不例外,顯示三維文本同樣需要該文本所對應的網(wǎng)格模型。D3D為此提供了功能庫函數(shù)D3DXCreateText(),它可以方便地創(chuàng)建一個包含具體文本的網(wǎng)格模型。,D3DXCreateText()聲明,HRESULT D3DXCreateText( LPDIRECT3DDEVICE9pDevice, HDC hDC, LPCTSTR pText, FLOAT Deviation, FLOAT Extrusion, LPD3DXMESH *ppMesh, LPD3DXBUFFER *ppAdjacency, LPGLYPHMETERICSFLO

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

9、eateCompatibleDC( NULL ); if( hdc = NULL ) return E_OUTOFMEMORY; /創(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); /將字體選進設備描述表 SelectObject(hdc, hFont);,繪制三維文本網(wǎng)格模型,創(chuàng)建好文本的網(wǎng)格模型之后,就可以使用ID3DXMesh的接口函數(shù)DrawSubset()將其繪制出來,在繪制之前需要注意設置合適的世界矩陣,這時雖然是繪制三維文本,但實質上就是繪制一個三維物體,所以為三維文本設置世界矩陣是必不可少的。,繪制三維文本的代碼片段,VOID SetWorldMatrix() /創(chuàng)建并設置世界矩陣 D3DXMATRIX matWorld; D3DXMATRIX matTrans; D3DXMatrixTranslation(,小結,文本繪制

溫馨提示

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

評論

0/150

提交評論