2012-12-13 21 views
0

你好,我正在使用DirectX處理遊戲,我知道如何創建一個字體並用該字體繪製文本,這就是我的做法。如何加載自定義字體,以便我可以在DirectX中使用它們?

這裏我創建我的字體。

D3DXCreateFont(D3DDevice, // The device 
       20,      // Font size 
       0,       // Default width 
       FW_NORMAL,     // Font weight 
       1,       // MipMap 
       false,      // Italic 
       DEFAULT_CHARSET,   // Charset 
       OUT_DEFAULT_PRECIS,  // Output precision 
       DEFAULT_QUALITY,   // Quality 
       DT_LEFT | DT_TOP,   // Default pitch & family 
       "Arial",     // Font name 
       &ArialFont);    // Font object 

這是我的RECT當我顯示我的字體。

RECT FontRect; 
FontRect.left   = 50;   // xPos 
FontRect.top   = 50;   // yPos 
FontRect.right   = 800;  // maxX Cutoff 
FontRect.bottom  = 600;  // maxY Cutoff 

這裏我顯示我的字體。

ArialFont->DrawTextA(NULL,         // Sprite 
        "Test Text",       // Text 
        strlen("Test Text"),     // Text length 
        &FontRect,        // The font RECT 
        DT_LEFT | DT_TOP,      // Format 
        D3DXCOLOR_XRGB(255, 255, 255));  // Color 

但是你可以看到,當我創造了我的字體的倒數第二個參數只是字體名稱和,因爲我只需要編寫這意味着該字體必須安裝到我的電腦右鍵名字? 現在我的問題是如何從文件加載字體到內存或任何只是當我運行這個程序,所以我可以有一個'自定義字體'?

回答

2

您可以在程序開始時臨時安裝自定義字體(例如.ttf文件)。因此,您可以使用WinApi-Method AddFontResourceEx()msdn-doc)將字體加載到系統。如果您用FR_PRIVATE標記它,它只能用於您的過程,並在過程終止時自動刪除。使用RemoveFontResourceEx()msdn-doc),您可以手動將其刪除。 DirectX中已安裝字體的使用僅僅是通過它的名稱。

相關問題