テキストの描画 (GDI+)
Graphics クラスの DrawString メソッドを使用することで、指定した位置または指定した四角形内にテキストを描画できます。
指定の位置にテキストを描画
指定した位置にテキストを描画するには、Graphics、FontFamily、Font、PointF、Brush オブジェクトが必要です。
次の例では、文字列「Hello」を場所 (30, 10) に描画します。 フォント ファミリは Times New Roman です。 フォント ファミリの個々のメンバーであるフォントは、Times New Roman、24 ピクセル サイズ、標準スタイルです。 グラフィックスは既存の Graphics オブジェクトとします。
FontFamily fontFamily(L"Times New Roman");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
PointF pointF(30.0f, 10.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);
上記のコードの出力を次の図に示します。
上記の例では、FontFamily コンストラクターは フォント ファミリを識別する文字列を受け取ります。 FontFamily オブジェクトのアドレスは、最初の引数として Font コンストラクターに渡されます。 Font コンストラクタに渡される 2 番目の引数は、4 番目の引数が指定する単位で測定されるフォントのサイズを指定します。 3 番目の引数は、フォントのスタイル (標準、太字、斜体など) を指定します。
DrawString メソッドは 5 つの引数を受け取ります。 最初の引数は描画する文字列、2 番目の引数はその文字列の長さ (バイト単位ではなく文字単位) です。 文字列が null で終わる場合は、長さとして –1 を渡すことができます。 3 番目の引数は、前に構築した Font オブジェクトのアドレスです。 4 番目の引数は、文字列の左上隅の座標を含む PointF オブジェクトです。 5 番目の引数は、文字列の文字を埋めるために使用される SolidBrush オブジェクトのアドレスです。
四角形内にテキストを描画
Graphics クラスの DrawString メソッドの 1 つには RectF パラメーターがあります。 その DrawString メソッドを呼び出すことで、指定する四角形で折り返すテキストを描画できます。 四角形にテキストを描くには、Graphics、FontFamily、Font、RectF、Brush オブジェクトが必要です。
次の例では、左上隅 (30, 10)、幅 100、高さ 122 の四角形を作成します。 次に、コードはその四角形内に文字列を描きます。 文字列は四角形に制限され、個々の単語が崩れないように折り返します。
WCHAR string[] =
L"Draw text in a rectangle by passing a RectF to the DrawString method.";
FontFamily fontFamily(L"Arial");
Font font(&fontFamily, 12, FontStyleBold, UnitPoint);
RectF rectF(30.0f, 10.0f, 100.0f, 122.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(string, -1, &font, rectF, NULL, &solidBrush);
Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
次の図では、四角形に描画されたテキストを示します。
上記の例では、DrawString メソッドに渡される 4 番目の引数は、テキストの境界となる四角形を指定する RectF オブジェクトです。 5 番目のパラメーターは StringFormat タイプです。特殊な文字列の書式は必要ないため、引数は NULL です。