次の方法で共有


直線の描画

GDI+ で直線を描画するには、Graphics オブジェクトと Pen オブジェクトが必要です。Graphics オブジェクトが DrawLine メソッドを提供し、Pen オブジェクトが直線の色や幅などの属性を保持します。Pen オブジェクトは、DrawLine メソッドに引数として渡されます。

1 本の線を点 (0, 0) から点 (100, 100) に描画する例を次に示します。この例には LineForm クラスが記述されており、このクラスは .NET Frameworks の Form クラスから継承しています。Form クラスは、ウィンドウを作成および表示するために必要なコードをカプセル化しています。

LineForm クラスは、オーバーライドされた OnPaint メソッドおよび Main メソッドから成っています。Main メソッドは、Application オブジェクトの Run メソッドを呼び出して、LineForm オブジェクトのインスタンスを作成し、そのインスタンスをウィンドウとして表示します。画面に直線を描画する GDI+ コードは、OnPaint メソッドに組み込まれています。

OnPaint メソッドは、Paint イベントへの応答として呼び出されるときに、システムから PaintEventArgs オブジェクトを受け取ります。Paint イベントは、フォームを再描画する必要がある場合、たとえばフォームが移動した場合やフォームのサイズが変更された場合に発生します。PaintEventArgs オブジェクトは、そのメンバの 1 つとして、フォームに関連付けられている Graphics オブジェクトを保持しています。OnPaint メソッドは、この Graphics オブジェクトを g に割り当てます。

次に、OnPaint メソッドは、Pen オブジェクトを作成します。Pen コンストラクタに渡される 1 つの引数は、システム定義色の Color.Black です。

続いて、OnPaint メソッドは、描画対象の直線の端点を表す 2 つの Point オブジェクトを作成します。

最後に、Graphics.DrawLine メソッドを呼び出して、画面に直線を描画します。DrawLine メソッドには、引数として Pen オブジェクトと 2 つの Point オブジェクトが渡されます。

Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.Drawing.Text

Public Class LineForm
   Inherits Form

   Protected Overrides Sub OnPaint(ByVal e as PaintEventArgs)
      Dim g As Graphics
      g = e.Graphics
      Dim blackPen As new Pen(Color.Black, 3)
      Dim startPoint As new Point(0, 0)
      Dim endPoint As new Point(100, 100)
      g.DrawLine(blackPen, startPoint, endPoint)
   End Sub

   Shared Sub Main()
      Application.Run(new LineForm())
   End Sub

End Class

[C#]
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;

public class LineForm : Form 
{
   protected override void OnPaint(PaintEventArgs e)
   {
      Graphics g = e.Graphics;
      Pen blackPen = new Pen(Color.Black, 3);
      Point startPoint = new Point(0, 0);
      Point endPoint = new Point(100, 100);
      g.DrawLine(blackPen, startPoint, endPoint);
   }

   public static void Main()
   {
      Application.Run(new LineForm());
   }

}