この章では、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