この章では、Graphics.DrawStringメソッドの別バージョンの使い方を見てみます。
DrawStringメソッドには、6つのオーバーロードバージョンがあります。このうち、この章では描画範囲を矩形で指定したバージョンを使ってみます。
public void DrawString ( string s, Font font, Brush brush, RectangleF layoutRectangle )layoutRectangleには、描画する範囲を示すRectangleF構造体を指定します。
RectangleF構造体には、オーバーロードされた2つのコンストラクタがあります。
public RectangleF ( PointF location, SizeF size ) public RectangleF ( float x, float y, float width, float height )locationは、四角形の左上隅を表すPointF構造体です。PointF構造体はすでに第3章で取り扱っています。この構造体には、次で示すコンストラクタがあります。
public PointF ( float x, float y )SizeF構造体のコンストラクタは、
public SizeF ( float width, float height )となっています。このほかに2つのオーバーロードバージョンがあります。
publicなプロパティには
public float Width { get; set; } //幅
public float Height { get; set; } //高さ
public bool IsEmpty { get; }
IsEmptyプロパティは、幅と高さが0かどうかを調べます。では、四角形で描画領域を指定したDrawStringメソッドの例を見てみましょう。
// drawstring02.cs
using System;
using System.Drawing;
using System.Windows.Forms;
class drawstring02 : Form
{
public static void Main()
{
drawstring02 d2 = new drawstring02();
Application.Run(d2);
}
public drawstring02()
{
Text = "猫でもわかるプログラミング";
BackColor = Color.White;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
string str = "今日はよい天気です。\n" +
"しかし明日もよい天気かどうかはわかりません。" +
"明日は、明日の風が吹きます。";
Font ft = new Font("MS ゴシック", 20);
RectangleF rf = new RectangleF(10F, 10F, 230F, 200F);
g.DrawRectangle(new Pen(Color.Blue), 10, 10, 230, 200 );
g.DrawString(str, ft, Brushes.Black, rf);
}
}
この例では、DrawStringメソッドの描画領域をはっきりさせるために、Graphics.DrawRectangleメソッドで、描画領域の四角形を描画しています。
public void DrawRectangle ( Pen pen, int x, int y, int width, int height )penは描画のためのペンオブジェクト、(x,y)は四角形の左上隅の座標、width,heightは四角形の幅と高さです。(他にもオーバーロードバージョンがあります)
実行結果は、次のようになります。
Update 21/Oct/2006 By Y.Kumei