2011-11-14 31 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。

相关问题