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

しかし、私がフォントを作成したとき、最後の 2 番目のパラメーターは単なるフォント名であり、名前を書くだけなので、そのフォントをコンピューターにインストールする必要があることを意味しますよね? ここで私の質問は、このプログラムを実行するときに、ファイルからメモリなどにフォントをロードして、「カスタム フォント」を使用できるようにする方法です。

4

1 に答える 1

2

プログラムの開始時にカスタム フォント (.ttf ファイルなど) を一時的にインストールできます。したがって、WinApi-Method AddFontResourceEx()( msdn-doc ) を使用してフォントをシステムにロードできます。フラグを付けるとFR_PRIVATE、プロセスでのみ使用でき、プロセスが終了すると自動的に削除されます。RemoveFontResourceEx()( msdn -doc ) を使用すると、手動で削除できます。DirectX にインストールされているフォントは、単にその名前を介して使用されます。

于 2012-12-13T17:12:44.210 に答える