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

ID3DXFont : Text is stretched, how to get font's width & height?

本文关键字:字体 获取 高度 文本 何获取 ID3DXFont      更新时间:2023-10-16

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

  • 拉伸的"OCR A 扩展"字体:https://i.stack.imgur.com/k8OsM.jpg
  • 普通"普里什蒂纳"字体:https://i.stack.imgur.com/c8zfE.jpg

我尝试在 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 );

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

好的,所以我错过了那里Microsoft的重要帮助:DirectX Samples(来自 DirectX SDK(。

显然有一个关于如何绘制文本,解决方案是简单地为宽度参数输入 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 );