我正在使用d3d9&amp ;;进行GUI项目。 d3dx9。我使用D3DXCreateFont
函数(C ++)创建字体。一切都很好。但我需要一个函数来确定特定文本的像素宽度。
这样的事情:
char text[64] = "Heyho - Blablabla";
GUIFont* hFont = gui->fonts->CreateFont("DefaultFont", "Arial", 18);
int width = hFont->GetTextWidth(text);
[...]
gui> fonts-> CreateFont的部分工作正常。这是我创建和存储字体的方式。忽略那部分,它都是关于GetTextWidth的。我的CreateFont函数初始化GUIFont对象。实际的D3D-Font存储在LPD3DXFONT中。
我真的希望你可以帮我这个,我很确定这是可能的 - 我只是不知道如何。感谢阅读,我希望你有一个线索。
答案 0 :(得分:6)
您可以使用DT_CALCRECT
函数ID3DXFont
上的DrawText
标记来返回包含文本的矩形所需的大小。
所以,如果你想获得宽度,你可能会有这样的函数:
int GetTextWidth(const char *szText, LPD3DXFont pFont)
{
RECT rcRect = {0,0,0,0};
if (pFont)
{
// calculate required rect
pFont->DrawText(NULL, szText, strlen(szText), &rcRect, DT_CALCRECT,
D3DCOLOR_XRGB(0, 0, 0));
}
// return width
return rcRect.right - rcRect.left;
}
显然,如果需要,你也可以提取高度。