ID3DXFont::DrawText メソッド
ID3DXFont::DrawText メソッド
整形されたテキストを描画する。このメソッドは、ANSI および Unicode 文字列をサポートする。
構文
INT DrawText(
LPCSTR pString,
INT Count,
LPRECT pRect,
DWORD Format,
D3DCOLOR Color
);
パラメータ
pString
[in] 描画する文字列へのポインタ。このパラメータは、ANSI および Unicode 文字列をサポートする。UNICODE または _UNICODE が定義されている場合、文字列の型は LPCWSTR でなければならない。それ以外の場合は、LPCSTR でなければならない。Count パラメータが -1 の場合、文字列は Null で終わる必要がある。
Format に
DT_MODIFYSTRING
が含まれている場合は、この関数で最大 4 文字まで文字を追加できる。文字列を保持するバッファには、これらの追加文字を格納できる十分な大きさが必要である。Count
[in] 文字列の文字数を指定する。Count が -1 の場合、パラメータ pString は Null 終端文字列へのポインタと見なされ、ID3DXFont::DrawText により文字数が自動的に計算される。pRect
[in] テキストをフォーマットする矩形の論理座標を格納する RECT 構造体へのポインタ。Format
[in] テキストをフォーマットするメソッドを指定する。次の値を任意に組み合わせることができる。DT_BOTTOM
矩形の底部でテキストを両端揃えにする。この値はDT_SINGLELINE
と組み合わせて使わなければならない。DT_CALCRECT
矩形の幅と高さを計算する。テキストが複数行ある場合、ID3DXFont::DrawText は pRect パラメータが参照する矩形の幅を使い、テキストの最後の行が含まれるように矩形の底辺を延長する。テキストが 1 行だけの場合、ID3DXFont::DrawText は行の最後の文字が収まるように矩形の右側の辺の位置を修正する。どちらの場合も、ID3DXFont::DrawText は整形されたテキストの高さを返すが、テキストは描画しない。DT_CENTER
矩形内でテキストを水平方向で中央揃えにする。DT_EDITCONTROL
マルチライン エディット コントロールのテキスト表示特性を複製する。特に、平均の文字幅はエディット コントロールと同じ方法で計算され、部分的に見える最後の行は表示されない。DT_END_ELLIPSIS or DT_PATH_ELLIPSIS
省略記号を追加せずに文字列を切り捨て、指定した矩形に収まるようにする。DT_MODIFYSTRING
フラグが指定されている場合を除き、文字列は修正されない。DT_END_ELLIPSIS は文字列の最後で文字を切り捨てるために指定する。DT_PATH_ELLIPSIS は文字列の中間で文字を切り捨てるために指定する。文字列にバックスラッシュ (\) が含まれている場合、DT_PATH_ELLIPSIS は最後のバックスラッシュより後ろにあるテキストをできるだけ多く保持する。
DT_EXPANDTABS
タブ文字を拡張する。タブごとのデフォルトの文字数は 8 字である。DT_WORD_ELLIPSIS
、DT_PATH_ELLIPSIS、および DT_END_ELLIPSIS の各値は、DT_EXPANDTABS
値と共には使えない。DT_EXTERNALLEADING
行の高さにフォントの外部余白を含める。通常、外部余白は、テキストの行の高さには含まれない。DT_HIDEPREFIX
Microsoft® Windows® 2000:テキストに含まれるアンパサンド プレフィクス文字を無視する。アンパサンドに続く文字に下線は付かないが、他のニーモニック プレフィクス文字はそのまま処理される。例 :
入力文字列 :"A&bc&&d"
標準 :"A&d"
HIDEPREFIX:"Abc&d"
DT_NOPREFIX
およびDT_PREFIXONLY
と比較すること。DT_INTERNAL
システム フォントを使ってテキスト メトリクスを計算する。DT_LEFT
テキストを左揃えにする。DT_MODIFYSTRING
文字列を修正して表示されたテキストに合わせる。DT_END_ELLIPSIS または DT_PATH_ELLIPSIS が指定されている場合のみ、このフラグは有効となる。DT_NOCLIP
クリッピングせずに描画する。ID3DXFont::DrawText は、DT_NOCLIP
を使うとやや高速である。DT_NOFULLWIDTHCHARBREAK
Windows 98、Windows 2000:2 バイト文字セット (DBCS) で改行されないようにする。これにより改行ルールは 1 バイト文字セット (SBCS) と同じになる。たとえば、韓国語版 Windows でアイコン ラベルを読みやすくするために使われる。DT_WORDBREAK
が指定されている場合のみ有効である。DT_NOPREFIX
プレフィクス文字の処理をオフにする。通常、ID3DXFont::DrawText はニーモニック プレフィクス文字の & を、その後に続く文字に下線を付ける命令として解釈し、ニーモニック プレフィクス文字が && と 2 つ続いた場合は、& を 1 つ出力する命令として解釈する。DT_NOPREFIX
を指定することにより、この処理はオフになる。DT_HIDEPREFIX
およびDT_PREFIXONLY
と比較すること。DT_PREFIXONLY
Windows 2000:アンパサンド (&) プレフィクス文字に続く文字の位置で、下線のみを描画する。文字列に含まれる文字は描画しない。DT_RIGHT
テキストを右端揃えにする。DT_RTLREADING
ヘブライ語またはアラビア語のフォントが選択されている場合、読みの順序が双方向のテキストについて右から左の順に読むようにテキストを表示する。デフォルトの読みの順序は、すべてのテキストで左から右となっている。DT_SINGLELINE
1 行のみにテキストを表示する。改行と行送りで新しい行に移らない。DT_TABSTOP
タブ ストップを設定する。Format パラメータのビット 15–8 (低位語の高次バイト) により各タブの文字数を指定する。タブごとのデフォルトの文字数は 8 字である。DT_CALCRECT
、DT_EXTERNALLEADING
、DT_INTERNAL
、DT_NOCLIP
、およびDT_NOPREFIX
の各値は、DT_TABSTOP
値と共には使えない。DT_TOP
先頭行のテキストを両端揃えにする (1 行のみ)。DT_VCENTER
上下方向でテキストを中央揃えにする (1 行のみ)。DT_WORDBREAK
語を分割する。pRect パラメータで指定した矩形から語がはみ出す場合、語と語の間で自動的に改行される。改行/行送りのシーケンスも改行となる。DT_WORD_ELLIPSIS
矩形に収まらないテキストを切り捨て、省略記号を追加する。
Color
[in] テキストの色。詳細については、「D3DCOLOR」を参照すること。
戻り値
成功した場合は、論理的単位を使ってテキストの高さを返す。DT_VCENTER
または DT_BOTTOM
が指定されている場合は、lpRect->top から描画されたテキストの下端までのオフセットを返す。
失敗した場合は、ゼロを返す。
注意
この関数は、ANSI 文字列および Unicode 文字列を両方サポートしている。
このメソッドは、IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene ブロックの内側で呼び出さなければならない。
DT_NOCLIP
フォーマットが使われる場合を除き、このメソッドは、指定された矩形の外側にテキストがはみ出ないようテキストを切り取る。DT_SINGLELINE
フォーマットが指定されている場合を除き、整形処理では複数行が対象であると見なされる。
選択したフォントが大きすぎて矩形に収まらない場合、このメソッドは小さいフォントで置き換える処理を行わない。
このメソッドは、escapement と orientation の両方がゼロのフォントのみサポートする。