ダウンロード サンプルファイル(C#) (185.1 KB)
ダウンロード サンプルファイル(VB) (202.7 KB)
描画の基本
.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メソッドをコメントアウトし、サンプルを実行してから、フォームのサイズを変更してみてください。正しく直線が描画されないことを確認できます。
この記事は参考になりましたか?
- 仮想ネットワークの実装で学ぶTCP/IP連載記事一覧
-
- 仮想ネットワーク実装でTCP/IPを学ぼう(7) ― GDI+と独自プロトコルの定義
- 仮想ネットワーク実装でTCP/IPを学ぼう(6) ― セキュリティの基礎と仮想ネットワーク...
- 仮想ネットワーク実装でTCP/IPを学ぼう(5) ― アプリケーション層の勘所
- この記事の著者
-
インドリ(インドリ)
分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
