DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

矢印を描く

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

線を描画するときに使用するPenオブジェクトのEndCapプロパティをLineCap.ArrowAnchorにするだけで、簡単に矢印が描けます。なお線の描き方に関しては、「線を描く」や「曲線を描く」等をご覧ください。

EndCapプロパティは線の終点で使用するパターン(キャップスタイル)を指定するものです。同様にStartCapプロパティで始点のキャップスタイルも指定できます。

実際にStartCapとEndCapプロパティをいろいろ変えて直線を描いてみましょう。

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)

'Penオブジェクトの作成(幅10の黒色)
Dim blackPen As New Pen(Color.Black, 10)

'終点に矢印をつける
blackPen.EndCap = LineCap.ArrowAnchor
'線を描画
g.DrawLine(blackPen, 10, 10, 100, 10)

'StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Flat
blackPen.EndCap = LineCap.DiamondAnchor
'線を描画
g.DrawLine(blackPen, 10, 30, 100, 30)

'StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Round
blackPen.EndCap = LineCap.RoundAnchor
'線を描画
g.DrawLine(blackPen, 10, 50, 100, 50)

'StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Square
blackPen.EndCap = LineCap.SquareAnchor
'線を描画
g.DrawLine(blackPen, 10, 70, 100, 70)

'StartCapとEndCapを変更する
blackPen.StartCap = LineCap.NoAnchor
blackPen.EndCap = LineCap.Triangle
'線を描画
g.DrawLine(blackPen, 10, 90, 100, 90)

'リソースを解放する
blackPen.Dispose()
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);

//Penオブジェクトの作成(幅10の黒色)
Pen blackPen   = new Pen(Color.Black, 10);

//終点に矢印をつける
blackPen.EndCap = LineCap.ArrowAnchor;
//線を描画
g.DrawLine(blackPen, 10, 10, 100, 10);

//StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Flat;
blackPen.EndCap = LineCap.DiamondAnchor;
//線を描画
g.DrawLine(blackPen, 10, 30, 100, 30);

//StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Round;
blackPen.EndCap = LineCap.RoundAnchor;
//線を描画
g.DrawLine(blackPen, 10, 50, 100, 50);

//StartCapとEndCapを変更する
blackPen.StartCap = LineCap.Square;
blackPen.EndCap = LineCap.SquareAnchor;
//線を描画
g.DrawLine(blackPen, 10, 70, 100, 70);

//StartCapとEndCapを変更する
blackPen.StartCap = LineCap.NoAnchor;
blackPen.EndCap = LineCap.Triangle;
//線を描画
g.DrawLine(blackPen, 10, 90, 100, 90);

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

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

結果は次のようになります。

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

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

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