2011-11-14 104 views
0

我想添加新的字體並在屏幕上繪製文本。如何將我自己的字體添加到DirectX?

但是,當我通過使用此字體繪製文本時,文本字體是Arial。

我不知道原因。

這是我的代碼。

請參閱並幫助我。

HANDLE   hFind; 
WIN32_FIND_DATA wfd; 
WCHAR   szFontPath[MAX_PATH]; 
int    nNum; 

swprintf(szFontPath, L"%s\\Fonts\\*.*", m_szAppPath); 
hFind = FindFirstFile(szFontPath, &wfd); 
if(hFind == INVALID_HANDLE_VALUE) 
    return; 
do 
{ 
    if(wfd.cFileName[0] == L'.') 
     continue; 
    swprintf(szFontPath, L"%s\\Fonts\\%s", m_szAppPath, wfd.cFileName); 
    nNum = AddFontResource(szFontPath); 
} 
while(FindNextFile(hFind, &wfd)); 
PostMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
FindClose(hFind); 

----------------------在其他引用函數中----------------- ---------------

int      nHeight; 
LPDIRECT3DSURFACE9  pSurface; 
HDC      hDC; 

m_pDevice = pDevice; 
m_pDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pSurface); 
pSurface->GetDC(&hDC); 
nHeight = -MulDiv(dwSize, GetDeviceCaps(hDC, LOGPIXELSY), 72); 
pSurface->ReleaseDC(hDC); 
m_hFont = CreateFont(nHeight, 0, 0, 0, bBold, bItalic, false, false, 
    HANGUL_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, 
    DEFAULT_PITCH/* | FF_DONTCARE*/, L"Helvetica-Condensed-Black-Se"); 

pSurface->Release(); 

回答

0

我不確定您可以爲您的字體指定路徑。您可能需要通過將其複製到c:\ windows \ fonts(或xp等效)來「安裝」它。

+0

有沒有辦法添加新的字體? – bTagTiger

0

似乎該字體不支持HANGUL_CHARSET。嘗試使用DEFAULT_CHARSET。

相關問題