IDirect3DDevice9* dev ;
ID3DXFont* font;
...
...
...
HFONT TextFont=CreateFont( 12, 6,0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FIXED_PITCH | FF_SCRIPT, "宋体" );
D3DXCreateFont( dev, TextFont, &font );
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
font->Begin();
font->DrawText(_T("Ready"), -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00);
font->End();
结果能显示文字,但是只能显示部分,比如"ready" 实际上只会显示"rea"。有什么解决方法吗?
ID3DXFont* font;
...
...
...
HFONT TextFont=CreateFont( 12, 6,0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FIXED_PITCH | FF_SCRIPT, "宋体" );
D3DXCreateFont( dev, TextFont, &font );
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
font->Begin();
font->DrawText(_T("Ready"), -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00);
font->End();
结果能显示文字,但是只能显示部分,比如"ready" 实际上只会显示"rea"。有什么解决方法吗?
不过可能是DirectX版本不同的问题,我的版本(Microsoft DirectX SDK (March 2008))里面,D3DXCreateFont和DrawText的用法都已经不一样了。我测试的代码:
//====================================================================
D3DXCreateFont( g_pd3dDevice,12,6,0,1,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,L"宋体", &font );
//====================================================================
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
font->DrawText(0,L"Ready", -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00);
不过可能是DirectX版本不同的问题,我的版本(Microsoft DirectX SDK (March 2008))里面,D3DXCreateFont和DrawText的用法都已经不一样了。 我测试的代码:
//====================================================================
D3DXCreateFont( g_pd3dDevice,12,6,0,1,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,L"宋体", &font );
//====================================================================
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
font->DrawText(0,L"Ready", -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00); ==================================================================================================
更新SDK后还是一样 只显示"Rea"
D3DXCreateFont( dev,12,6,0,1,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,_T("宋体"), &font );
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
font->DrawText(NULL,_T("Ready"), -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00);
从网上看到好像要用到ID3DXSprite,ID3DXSprite怎么用法啊?
D3DXCreateSprite(dev,&spr);
D3DXCreateFont( dev,12,6,0,1,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,_T("宋体"), &font );
RECT rc;
rc.left = 50;
rc.top = 10;
rc.right = 300;
rc.bottom = 300;
spr->Begin(D3DXSPRITE_ALPHABLEND);
font->DrawText(spr,_T("Ready"), -1, &rc, DT_TOP|DT_LEFT|DT_SINGLELINE, 0xff00ff00);
spr->End();
结果出错了。