GDI + Grafik in Visual Basic .NET Tutorial

GDI + ist die Möglichkeit, Formen, Schriftarten, Bilder oder allgemein alles Grafische zu zeichnen Visual Basic .NETZ.

Dieser Artikel ist der erste Teil einer vollständigen Einführung in die Verwendung von GDI + in Visual Basic .NET.

GDI + ist ein ungewöhnlicher Bestandteil von .NET. Es war hier vor .NET (GDI + wurde mit Windows XP veröffentlicht) und es hat nicht die gleichen Aktualisierungszyklen wie .NET Framework. In der Microsoft-Dokumentation wird normalerweise angegeben, dass Microsoft Windows GDI + eine API für ist C / C ++ Programmierer in das Windows-Betriebssystem. Aber GDI + ebenfalls beinhaltet die in VB.NET verwendete Namespaces für die softwarebasierte Grafikprogrammierung.

WPF

Aber es ist nicht das nur Grafiksoftware von Microsoft, insbesondere seit Framework 3.0. Als Vista und 3.0 eingeführt wurden, wurde das völlig neue WPF damit eingeführt. WPF ist ein hardwarebeschleunigter High-Level-Ansatz für Grafiken. Wie Tim Cahill, Mitglied des Microsoft WPF-Softwareteams, sagt, beschreiben Sie mit WPF "Ihre Szene mithilfe von Konstrukten auf hoher Ebene, und wir werden uns um das kümmern." Ruhe. "Und die Tatsache, dass die Hardware beschleunigt wird, bedeutet, dass Sie den Betrieb Ihres PC-Prozessors nicht nach unten ziehen müssen, um Formen auf dem Computer zu zeichnen Bildschirm. Ein Großteil der eigentlichen Arbeit wird von Ihrer Grafikkarte erledigt.

instagram viewer

Wir waren jedoch schon einmal hier. Jeder "große Sprung vorwärts" wird normalerweise von ein paar Stolpern rückwärts begleitet, und außerdem wird es Jahre dauern, bis sich WPF durch die Millionen Bytes von GDI + -Code arbeitet. Dies gilt insbesondere, da WPF fast davon ausgeht, dass Sie mit einem leistungsstarken System mit viel Speicher und einer heißen Grafikkarte arbeiten. Aus diesem Grund konnten viele PCs Vista nicht ausführen (oder zumindest die Vista "Aero" -Grafiken verwenden), als es erstmals eingeführt wurde. Daher ist diese Serie weiterhin auf der Website für alle verfügbar, die sie weiterhin benötigen.

Guter alter Code

GDI + kann nicht wie andere Komponenten in VB.NET auf ein Formular gezogen werden. Stattdessen müssen GDI + -Objekte in der Regel auf die alte Weise hinzugefügt werden - indem Sie sie von Grund auf neu codieren! (Obwohl VB .NET eine Reihe sehr praktischer Codefragmente enthält, die Ihnen wirklich helfen können.)

Zum Codieren von GDI + verwenden Sie Objekte und deren Mitglieder aus einer Reihe von .NET-Namespaces. (Derzeit handelt es sich eigentlich nur um Wrapper-Code für Windows-Betriebssystemobjekte, die tatsächlich die Arbeit erledigen.)

Namespaces

Die Namespaces in GDI + sind:

System. Zeichnung

Das ist das Kern-GDI + -Namensraum. Es definiert Objekte für das grundlegende Rendern (Schriftarten, Stifte, Grundpinsel usw.) und das wichtigste Objekt: Grafik. Wir werden mehr davon in nur wenigen Absätzen sehen.

System. Zeichnung. Zeichnung2D

Auf diese Weise erhalten Sie Objekte für erweiterte zweidimensionale Vektorgrafiken. Einige von ihnen sind Verlaufspinsel, Stiftkappen und geometrische Transformationen.

System. Zeichnung. Bildgebung

Wenn Sie grafische Bilder ändern möchten, dh die Palette ändern, Bildmetadaten extrahieren, Metadateien bearbeiten usw. möchten, benötigen Sie diese.

System. Zeichnung. Drucken

Verwenden Sie die Objekte hier, um Bilder auf der gedruckten Seite zu rendern, mit dem Drucker selbst zu interagieren und das gesamte Erscheinungsbild eines Druckauftrags zu formatieren.

System. Zeichnung. Text

Mit diesem Namespace können Sie Schriftsammlungen verwenden.

Grafikobjekt

Der Ausgangspunkt für GDI + ist der Grafik Objekt. Obwohl die von Ihnen gezeichneten Objekte auf Ihrem Monitor oder einem Drucker angezeigt werden, ist das Grafikobjekt die "Leinwand", auf der Sie zeichnen.

Das Grafikobjekt ist jedoch auch eine der ersten Ursachen für Verwirrung bei der Verwendung von GDI +. Das Grafikobjekt ist immer einem bestimmten Objekt zugeordnet Gerätekontext. Das erste Problem, mit dem praktisch jeder neue GDI + -Student konfrontiert ist, lautet: "Wie bekomme ich ein Grafikobjekt?"

Grundsätzlich gibt es zwei Möglichkeiten:

  1. Du kannst den... benutzen e Ereignisparameter, der an die übergeben wird OnPaint Veranstaltung mit dem PaintEventArgs Objekt. Mehrere Ereignisse passieren die PaintEventArgs Mit können Sie auf das Grafikobjekt verweisen, das bereits vom Gerätekontext verwendet wird.
  2. Du kannst den... benutzen CreateGraphics Methode für einen Gerätekontext zum Erstellen eines Grafikobjekts.

Hier ist ein Beispiel für die erste Methode:

Geschützte Überschreibungen Sub OnPaint (_. ByVal e As System. Windows. Formen. PaintEventArgs) Dim g As Graphics = e. Grafik. G. DrawString ("Über Visual Basic" & vbCrLf _. & "und GDI +" & vbCrLf & "Ein großartiges Team", _. Neue Schriftart ("Times New Roman", 20), _. Pinsel. Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Klicken Sie hier, um die Abbildung anzuzeigen

Fügen Sie dies der Form1-Klasse für eine Standard-Windows-Anwendung hinzu, um es selbst zu codieren.

In diesem Beispiel wurde bereits ein Grafikobjekt für das Formular erstellt Form 1. Ihr Code muss lediglich eine lokale Instanz dieses Objekts erstellen und damit auf demselben Formular zeichnen. Beachten Sie, dass Ihr Code Überschreibungen das OnPaint Methode. Deshalb MyBase. OnPaint (e) wird am Ende ausgeführt. Sie müssen sicherstellen, dass das Basisobjekt (das, das Sie überschreiben) etwas anderes tut, eine Chance dazu erhält. Oft funktioniert Ihr Code ohne dies, aber es ist eine gute Idee.

PaintEventArgs

Sie können ein Grafikobjekt auch mit dem abrufen PaintEventArgs Objekt an Ihren Code in der übergeben OnPaint und OnPaintBackground-Methoden einer Form. Das PrintPageEventArgs bestanden in a Seite drucken Das Ereignis enthält ein Grafikobjekt zum Drucken. Es ist sogar möglich, für einige Bilder ein Grafikobjekt abzurufen. Auf diese Weise können Sie genau wie auf einem Formular oder einer Komponente direkt auf das Bild malen.

Ereignishandler

Eine andere Variante der ersten Methode besteht darin, einen Ereignishandler für die hinzuzufügen Farbe Ereignis für das Formular. So sieht dieser Code aus:

Private Sub Form1_Paint (_. ByVal-Absender als Objekt, _. ByVal e As System. Windows. Formen. PaintEventArgs) _. Behandelt mich. Farbe. Dim g As Graphics = e. Grafik. G. DrawString ("Über Visual Basic" & vbCrLf _. & "und GDI +" & vbCrLf & "Ein großartiges Team", _. Neue Schriftart ("Times New Roman", 20), _. Pinsel. Schamottestein, 0, 0) End Sub

CreateGraphics

Die zweite Methode zum Abrufen eines Grafikobjekts für Ihren Code verwendet a CreateGraphics Methode, die mit vielen Komponenten verfügbar ist. Der Code sieht folgendermaßen aus:

Private Sub Button1_Click (_. ByVal Absender als System. Objekt, _. ByVal e As System. EventArgs) _. Behandelt Button1.Click. Dim g = Me. CreateGraphics. G. DrawString ("Über Visual Basic" & vbCrLf _. & "und GDI +" & vbCrLf & "Ein großartiges Team", _. Neue Schriftart ("Times New Roman", 20), _. Pinsel. Schamottestein, 0, 0) End Sub

Hier gibt es einige Unterschiede. Das ist in der Button1.Click Ereignis, weil wann Form 1 malt sich in der Belastung Eventuell gehen unsere Grafiken verloren. Also müssen wir sie in einem späteren Ereignis hinzufügen. Wenn Sie dies codieren, werden Sie feststellen, dass die Grafiken verloren gehen, wenn Form 1 muss neu gezeichnet werden. (Minimieren und maximieren Sie erneut, um dies zu sehen.) Dies ist ein großer Vorteil bei der Verwendung der ersten Methode.

Die meisten Referenzen empfehlen die Verwendung der ersten Methode, da Ihre Grafiken automatisch neu gestrichen werden. GDI + kann schwierig sein!