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