0

您好,我目前正在使用 DirectX 开发游戏,我知道如何创建字体并使用该字体绘制文本,这就是我的做法。

在这里,我创建了我的字体。

D3DXCreateFont(D3DDevice, // The device
               20,                        // Font size
               0,                         // Default width
               FW_NORMAL,                 // Font weight
               1,                         // MipMap
               false,                     // Italic
               DEFAULT_CHARSET,           // Charset
               OUT_DEFAULT_PRECIS,        // Output precision
               DEFAULT_QUALITY,           // Quality
               DT_LEFT | DT_TOP,          // Default pitch & family
               "Arial",                   // Font name
               &ArialFont);               // Font object

RECT当我显示我的字体时,这是我的。

RECT FontRect;
FontRect.left          = 50;         // xPos
FontRect.top           = 50;         // yPos
FontRect.right         = 800;        // maxX Cutoff
FontRect.bottom        = 600;        // maxY Cutoff

在这里我显示我的字体。

ArialFont->DrawTextA(NULL,                                  // Sprite
                     "Test Text",                           // Text
                     strlen("Test Text"),                   // Text length
                     &FontRect,                             // The font RECT
                     DT_LEFT | DT_TOP,                      // Format
                     D3DXCOLOR_XRGB(255, 255, 255));        // Color

但是您可以看到,当我创建字体时,倒数第二个参数只是字体名称,因为我只需要写下名称,这意味着该字体必须安装到我的计算机中,对吗?现在我的问题是我如何才能将文件中的字体加载到内存中,或者在我运行这个程序时如何加载,这样我就可以拥有一个“自定义字体”?

4

1 回答 1

2

您可以在程序开始时临时安装自定义字体(例如 .ttf 文件)。因此,您可以使用 WinApi 方法AddFontResourceEx()( msdn-doc ) 将字体加载到系统中。如果你用 标记它FR_PRIVATE,它只能在你的进程中使用,并且会在进程终止时被自动删除。使用RemoveFontResourceEx()( msdn-doc ) 您可以手动删除它。DirectX 中安装字体的使用只是通过它的名称。

于 2012-12-13T17:12:44.210 回答