DOBON.NET

パスを使って図形を描く

注意:画像の表示方法が分からないという方は、まず「コントロールやフォームに画像を表示する」をご覧ください。また、Penクラスについては、「線を描く」をご覧ください。

線や図形を描く方法は「線を描く」「曲線を描く」「長方形、多角形、楕円、円弧、扇形を描く」「文字を描く」などで説明しましたが、これら以外にも線や図形を描く方法があります。それがパス(GraphicsPathオブジェクト)を使い、Graphics.DrawPathメソッドで描画する方法です。

パスはいろいろな線や図形(サブパス)から構成されています。「線を描く」「曲線を描く」「長方形、多角形、楕円、円弧、扇形を描く」「文字を描く」で紹介したほぼすべての図形をパスに追加できます。実際にGraphicsPathオブジェクトに図形を追加するには、"Add???"という名前のメソッドを使います。"Add???"メソッドは、Graphicsクラスのメソッド"Draw???"と対応しており、"Draw???"の使い方を知っていれば"Add???"も簡単に理解できるでしょう。

GraphicsのメソッドGraphicsPathのメソッド説明
DrawArcAddArc楕円の円弧
DrawBezierAddBezierベジエ曲線
DrawBeziersAddBeziersベジエ曲線のシーケンス
DrawClosedCurveAddClosedCurve閉じたカーディナル スプライン曲線
DrawCurveAddCurveカーディナル スプライン曲線
DrawEllipseAddEllipse楕円
DrawLineAddLine直線
DrawLinesAddLines一連の直線
DrawPathAddPathパス
DrawPieAddPie扇形
DrawPolygonAddPolygon多角形
DrawRectangleAddRectangle四角形
DrawRectanglesAddRectangles一連の四角形
DrawStringAddString文字列

次にGraphicsPathオブジェクトに図形を追加し、そのパスをGraphics.DrawPathメソッドで描画する例を示します。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing
'Imports System.Drawing.Drawing2D

'描画先とするImageオブジェクトを作成する
Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height)
'ImageオブジェクトのGraphicsオブジェクトを作成する
Dim g As Graphics = Graphics.FromImage(canvas)

'GraphicsPathオブジェクトの作成
Dim myPath As New GraphicsPath

'新しい図形を開始する
myPath.StartFigure()
'直線を2本追加する
myPath.AddLine(0, 0, 50, 50)
myPath.AddLine(100, 0, 150, 50)
'図形を閉じる
myPath.CloseFigure()

'新しい図形を開始する
myPath.StartFigure()
'直線を2本追加する
myPath.AddLine(0, 60, 50, 110)
myPath.AddLine(100, 60, 150, 110)

'新しい図形を開始する
myPath.StartFigure()
'直線を追加する
myPath.AddLine(100, 120, 150, 170)
'新しい図形を開始する
myPath.StartFigure()
'直線を追加する
myPath.AddLine(0, 120, 50, 170)

'四角を2つ追加する
myPath.AddRectangle(New Rectangle(160, 10, 60, 80))
myPath.AddRectangle(New Rectangle(160, 100, 60, 60))

'パス図形を描画する
g.DrawPath(Pens.Black, myPath)

'リソースを解放する
g.Dispose()

'PictureBox1に表示する
PictureBox1.Image = canvas
C#
コードを隠すコードを選択
//using System.Drawing;
//using System.Drawing.Drawing2D;

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//GraphicsPathオブジェクトの作成
GraphicsPath myPath = new GraphicsPath();

//新しい図形を開始する
myPath.StartFigure();
//直線を2本追加する
myPath.AddLine(0, 0, 50, 50);
myPath.AddLine(100, 0, 150, 50);
//図形を閉じる
myPath.CloseFigure();

//新しい図形を開始する
myPath.StartFigure();
//直線を2本追加する
myPath.AddLine(0, 60, 50, 110);
myPath.AddLine(100, 60, 150, 110);

//新しい図形を開始する
myPath.StartFigure();
//直線を追加する
myPath.AddLine(100, 120, 150, 170);
//新しい図形を開始する
myPath.StartFigure();
//直線を追加する
myPath.AddLine(0, 120, 50, 170);

//四角を2つ追加する
myPath.AddRectangle(new Rectangle(160, 10, 60, 80));
myPath.AddRectangle(new Rectangle(160, 100, 60, 60));

//パス図形を描画する
g.DrawPath(Pens.Black, myPath);

//リソースを解放する
g.Dispose();

//PictureBox1に表示する
PictureBox1.Image = canvas;

  • 履歴:
  • 2012/8/3 表示する方法を、PictureBox.Imageプロパティを使った方法に変更。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。