ID3DXFont:文本被拉伸,如何获取字体的宽度和高度?

时间:2019-08-06 18:36:42

标签: c++ fonts directx

我正在尝试向自定义游戏引擎添加字体支持。我在VS2012中使用C ++和DirectX 9。问题:创建ID3DXFont对象时,必须分别指定字符的宽度和高度,但是不同字体的长宽比(宽度/高度)不同,从而使一种字体延伸,而另一种则正常。

我尝试在Google和其他论坛上搜索一种可能的功能,以便从系统或其他来源获取这两个值,但是这并不算幸运...

现在,我手动输入:

ID3DXFont* f;
D3DXCreateFont(
        m_context->getD3Ddevice(),
        size, size / 4.0F,   // this part is the issue
        FW_REGULAR,
        0,
        false,
        DEFAULT_CHARSET,
        OUT_DEFAULT_PRECIS,
        DRAFT_QUALITY,
        DEFAULT_PITCH | FF_DONTCARE,
        m_name,
        &f );

此代码尚未修改,它是操作上面两张图片显示的文本的代码。

编辑:另外,忘记添加:如果您看到一个同性恋者,您会骚扰他/她吗?没有?好吧,所以不要对想要旧平台支持的人大吼大叫。

1 个答案:

答案 0 :(得分:0)

好的,所以我错过了Microsoft的关键帮助:DirectX示例(来自DirectX SDK)。

很明显,有一种关于如何绘制文本的方法,解决方案是只为width参数输入0:

D3DXCreateFont(
        m_context->getD3Ddevice(),
        size, 0,   // In order, height & width
        FW_REGULAR,
        0,
        false,
        DEFAULT_CHARSET,
        OUT_DEFAULT_PRECIS,
        DRAFT_QUALITY,
        DEFAULT_PITCH | FF_DONTCARE,
        m_name,
        &f );