描画の基本
.NETでフォームに描画をする際に、最初にするべきことはSystem.Drawing.Graphics
オブジェクトを取得することです。主な取得法は、System.Windows.Forms.Form
クラスのCreateGraphics
メソッドを使用する方法と、Paint
イベントのSystem.Windows.Forms.PaintEventArgs
オブジェクトのGraphics
プロパティから取得する方法があります。
取得後はSystem.Drawing.Graphics
オブジェクトに用意されている各種メソッドを使用して描画を行います。 他にも細かな注意点がありますが、文章では分かりにくいので、フォームに線を描画するサンプルプロジェクトDrawLineSampleを用いて解説します。
//重要な部分だけ抜粋 using System; using System.Drawing; using System.Windows.Forms; public partial class Form1 : Form { private void Form1_Paint( object sender, PaintEventArgs e ) { //赤い斜線を惹く Graphics grfx = e.Graphics; Pen pen = new Pen( Color.Red ); pen.Width = 10; PointF startPoint = new PointF( 0, 0 ); PointF endPoint = new PointF( ClientSize.Width - 1 , ClientSize.Height - 1 ); grfx.DrawLine( pen, startPoint, endPoint ); } private void Form1_Resize( object sender, EventArgs e ) { //正しく描画されるように再描画する this.Invalidate(); } }
このサンプルには、描画処理において注意するべき点を3つ盛り込んでいます。
1つ目に、線を描くオブジェクトを指定しなくてはなりません。.NETでは、Pen
もしくはBrush
オブジェクトを使用します。詳しくは次項で解説します。
2つ目に、描画位置は1ピクセルずれることを考慮せねばなりません。そのため、終了位置から-1を引いています。
3つ目に、フォームのサイズが変更された時に再描画を指定しなくてはなりません。これを怠ると正しくフォームが描画されません。Invalidate
メソッドをコメントアウトし、サンプルを実行してから、フォームのサイズを変更してみてください。正しく直線が描画されないことを確認できます。