Microsoft DirectX 8.0 (C++)

ID3DXFont::DrawTextA

Microsoft® Direct3D® デバイス上に、整形した ANSI テキストを描画する。

INT DrawTextA(
  LPCSTR pString,
  INT Count,
  LPRECT pRect,
  DWORD Format,
  D3DCOLOR Color
); 

パラメータ

pString
[in] 描画する ANSI 文字列へのポインタ。Count パラメータが -1 の場合、文字列は NULL で終わる必要がある。

Format に DT_MODIFYSTRING が含まれている場合は、この関数で最大 4 文字まで文字を追加できる。文字列を保持するバッファは、これらの余分な文字を適応できるように十分な容量がなければならない。

Count
[in] 文字列の文字数を指定する。Count が -1 の場合、パラメータの pString は末尾が Null の文字列へのポインタと見なされ、DrawTextA により文字列カウントが自動的に計算される。
pRect
[in] テキストがフォーマットされる論理座標に矩形を保持する RECT 構造体へのポインタ。
Format
[in] テキストをフォーマットするメソッドを指定する。次の値を任意に組み合わせることができる。
DT_BOTTOM
矩形の底部でテキストを両端揃えにする。この値は DT_SINGLELINE と組み合わせて使用しなければならない。
DT_CALCRECT
矩形の幅と高さを算出する。テキストが複数行ある場合、DrawTextApRect パラメータが参照する四角形の幅を使用し、テキストの最後の行が含まれるよう四角形の底辺を延長する。テキストが 1 行だけの場合、DrawTextA は行の最後の文字が収まるよう四角形の右側の辺の位置を修正する。どちらの場合も、DrawTextA は整形されたテキストの高さを返すが、テキストは描画しない。
DT_CENTER
矩形内でテキストを水平方向で中央揃えにする。
DT_EDITCONTROL
マルチライン エディット コントロールのテキスト表示特性を複製する。特に、平均の文字幅はエディット コントロールと同じ方法で計算され、部分的に見える最後の行は表示されない。
DT_END_ELLIPSIS または 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
Windows 2000 では次のようになる。テキストに含まれるアンパサンド (&) プレフィクス文字を無視する。アンパサンドに続く文字に下線は付かないが、ほかのニーモニックプレフィクス文字はそのまま処理される。

例 :

入力文字列 :"A&bc&&d"

標準 :"Abc&d"

HIDEPREFIX:"Abc&d"

DT_NOPREFIX と DT_PREFIXONLY と比較すること。

DT_INTERNAL
システム フォントを使用してテキスト メトリクスを計算する。
DT_LEFT
テキストを左揃えにする。
DT_MODIFYSTRING
文字列を修正して表示されたテキストに合わせる。DT_END_ELLIPSIS または DT_PATH_ELLIPSIS が指定されている場合のみ、このフラグは有効となる。
DT_NOCLIP
クリッピングせずに描画する。DrawTextA は、DT_NOCLIP を使用するとやや高速である。
DT_NOFULLWIDTHCHARBREAK
Windows 98、Windows 2000 の場合、DBCS (double-wide character string) で改行されないようにする。これにより改行ルールは SBCS の設定と同じになる。たとえば、韓国語版 Windows でアイコン ラベルを読みやすくするために使用される。DT_WORDBREAK が指定されている場合のみ有効である。
DT_NOPREFIX
プレフィクス文字の処理をオフにする。通常、DrawTextA はニーモニック プレフィクス文字の & を、その後に続く文字に下線を付ける命令として解釈し、ニーモニック プレフィクス文字が && と 2 つ続いた場合は、& を 1 つ出力する命令として解釈する。DT_NOPREFIX を指定することにより、この処理はオフになる。「DT_HIDEPREFIX」および「DT_PREFIXONLY」を参照すること。
DT_PREFIXONLY
Windows 2000 では次のようになる。アンパサンド (&) プレフィクス文字に続く文字の位置で、下線のみを描画する。文字列に含まれる文字は描画しない。

例 :

入力文字列 :"A&bc&&d"

標準 :"Abc&d"

PREFIXONLY:

DT_NOPREFIX および DT_HIDEPREFIX と比較すること。

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 型。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL
D3DERR_NOTAVAILABLE
D3DERR_OUTOFVIDEOMEMORY
D3DXERR_INVALIDDATA

注意

DrawText は、#define UNICODE スイッチが含まれているかどうかに応じて、DrawTextA または ID3DXFont::DrawTextW のどちらかをマップする。#define UNICODE スイッチを挿入または除外して、アプリケーションで Unicode または ANSI 文字列のどちらを使用するかを指定する。次のコードは、DrawText の定義方法を示している。

#ifndef DrawText
#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif
#endif

DrawTextA メソッドは、デバイス コンテキストで選択されたフォント、テキスト カラー、バックグラウンド カラーを使用してテキストを描画する。DT_NOCLIP フォーマットが使用される場合を除き、DrawTextA は指定された四角形の外側にテキストがはみ出ないようテキストをクリップする。DT_SINGLELINE フォーマットが指定されている場合を除き、整形処理では複数行が対象であると見なされる。

選択したフォントが大きすぎて四角形に収まらない場合、DrawTextA メソッドは小さいフォントで置き換える処理を行わない。

DrawTextA メソッドは、escapement と orientation の両方がゼロのフォントのみサポートする。

動作環境

  ヘッダー : D3dx8core.h で宣言。
  インポート ライブラリ : D3dx8.lib を使用。

参照

ID3DXFont::DrawTextW