Freigeben über


Zeichnen einer Linie

Zum Zeichnen einer Linie in GDI+ benötigen Sie ein Graphics-Objekt und ein Pen-Objekt. Das Graphics-Objekt stellt die DrawLine-Methode bereit, und das Pen-Objekt enthält Linienattribute, wie Farbe und Stärke. Das Pen-Objekt wird als Argument an die DrawLine-Methode übergeben.

Im folgenden Beispiel wird eine Linie zwischen den Punkten (0, 0) und (100, 100) gezeichnet. Sie basiert auf der LineForm-Klasse, die von der Form-Klasse von .NET Framework erbt. Die Form-Klasse schließt den Code ein, der zum Erstellen und Anzeigen eines Fensters erforderlich ist.

Die LineForm-Klasse besteht aus einer außer Kraft gesetzten OnPaint-Methode und einer Main-Methode. Die Main-Methode ruft die Run-Methode des Application-Objekts auf, um eine Instanz des LineForm-Objekts zu erstellen und es als Fenster anzuzeigen. Der GDI+-Code zum Zeichnen der Linie auf dem Bildschirm ist in der OnPaint-Methode enthalten.

Die OnPaint-Methode empfängt ein PaintEventArgs-Objekt vom System, nachdem die Methode als Reaktion auf ein Paint-Ereignis aufgerufen wurde (ein Paint-Ereignis tritt auf, wenn das Formular neu gezeichnet werden muss; z. B. wenn es verschoben bzw. verkleinert oder vergrößert wird). Zu den Membern des PaintEventArgs-Objekts gehört ein mit dem Formular verknüpftes Graphics-Objekt. Durch die OnPaint-Methode wird dieses Graphics-Objekt g zugewiesen.

Daraufhin wird von der OnPaint-Methode ein Pen-Objekt erstellt. Das an den Pen-Konstruktor übergebene Argument ist die systemdefinierte Farbe Color.Black.

Anschließend werden von der OnPaint-Methode zwei Point-Objekte erstellt, die die Endpunkte der zu zeichnenden Linie darstellen.

Zum Schluss ruft die OnPaint-Methode die Graphics.DrawLine-Methode auf, um eine Linie auf dem Bildschirm zu zeichnen. Die an die DrawLine-Methode übergebenen Argumente sind das Pen-Objekt und die beiden Point-Objekte.

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());
   }

}