Bitmaps programmieren mit VB.NET

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Wer von Access/VBA kommt, kennt das Problem: Alles, was mit der Erstellung und Bearbeitung von Grafiken zu tun hat, ist sehr kompliziert und erfordert in der Regel die Verwendung von API-Funktionen. Unter VB.NET ist dies sehr viel einfacher. Daher bietet es sich nicht nur an, die Grafikfähigkeiten des Namespaces System.Drawing für .NET-Anwendungen zu nutzen. Sie können die gewünschten Funktionen beispielsweise auch in DLLs integrieren, die Sie dann von Access aus einbinden und aufrufen können. Im vorliegenden Artikel wollen wir uns jedoch zunächst einmal die grundlegenden Möglichkeiten zum Erstellen und Bearbeiten von Bilddateien unter .NET ansehen.

Vorbereitung: LINQPad

LINQPad ist unsere Spielwiese, wenn es um das Ausprobieren von VB.NET-Code geht. Hier brauchen wir zum Testen einiger Zeilen Code nicht extra ein VB-Projekt anzulegen und dieses jedes Mal neu zu starten, um die Funktionsweise zu prüfen. Wir geben die gewünschten Zeilen einfach in eine Methode ein und starten diese mit F5 – ganz wie es beispielsweise im VBA-Editor möglich ist. Wie Sie LINQPad nutzen, lesen Sie im Artikel LINQPad: LINQ, C# und VB einfach ausprobieren (www.datenbankentwickler.net/100).

Für unser aktuelles Beispiel benötigen wir lediglich eine neue LINQPad-Query mit dem Wert VB Program im Auswahlfeld Language. Damit wir die Elemente des Namespaces System.Drawing verwenden können, fügen wir diesen zu der Query hinzu. Dazu klicken Sie mit der rechten Maustaste auf die Registerseite der Query und wählen den Eintrag Query Properties… aus. Hier wechseln Sie zur Registerseite Additional Namespace Imports und geben den Namespace System.Drawing einfach ein – ohne Imports-Anweisung, wie es direkt in Modulen nötig wäre (siehe Bild 1). Anschließend schließen Sie den Dialog mit der OK-Schaltfläche wieder.

Importieren des Namespaces System.Drawing.

Bild 1: Importieren des Namespaces System.Drawing.

Pfad zum Speichern der erstellten Bilddateien definieren

Die erzeugten Bilder wollen wir in einem Verzeichnis speichern, wo wir diese schnell wiederfinden. Den Namen dieses Verzeichnisses hinterlegen wir in einer Konstanten, die wir oben im Code wie folgt definieren:

Const strPath As String = "C:\...\BitmapTest\"

Eine neue Bilddatei erstellen

Wenn Sie einfach nur eine neue Bilddatei erstellen und unter einem bestimmten Namen speichern wollen, gelingt das sehr einfach. Dazu initialisieren Sie ein neues Objekt auf Basis der Klasse Bitmap und speichern diese einfach mit der Save-Methode. Diese erwartet den Namen der zu erstellenden Datei als Parameter. In einem einfachen Fall übergeben Sie die Höhe und die Breite der zu erstellenden Datei als Parameter beim Initialisieren des Objekts:

Dim bmp As New Bitmap(100, 100)
bmp.Save(strPath & "test.bmp")

Die so erzeugte Bitmap-Datei finden Sie im angegebenen Verzeichnis vor. Wenn Sie mit einem Bildprogramm öffnen, das in der Lage ist, transparente Bereiche hervorzuheben, sehen Sie, dass die erstellte Datei komplett transparent ist (siehe Bild 2).

Eine frisch erstellte, komplett transparente Datei

Bild 2: Eine frisch erstellte, komplett transparente Datei

Datei speichern und im Standardprogramm öffnen

Bevor wir uns weitere Techniken in Zusammenhang mit dem Bitmap-Objekt anschauen, wollen wir die Testprozedur noch ein wenig praktischer gestalten. Dazu fügen wir als Erstes eine neue Variable namens strFilename ein. Diese nimmt auch gleich den Namen der zu erstellenden Datei auf, hier Test.bmp. Der Grund ist, dass wir den Dateinamen gleich noch öfter benötigen. Wenn wir diesen dann ändern wollen, brauchen wir diesen nur an einer Stelle anzupassen.

Nach dem Erstellen und Speichern der Datei unter den angegebenen Dateinamen wollen wir diese noch in der dafür vorgesehenen Anwendung öffnen. Das erledigt ein Aufruf der Start-Methode der Process-Klasse:

Sub Main
     Dim bmp As New Bitmap(100, 100)
     Dim strFilename As String
     strFilename = "Test.bmp"
     bmp.Save(strPath & strFilename)
     Process.Start(strPath & strFilename)
End Sub

Hinweis: Wenn Sie die Standarddatei ändern wollen, die in Zusammenhang mit einer bestimmten Dateiendung aufgerufen wird, klicken Sie mit der rechten Maustaste auf den Dateinamen im Windows Explorer. Wählen Sie aus dem nun erscheinenden Kontextmenü den Eintrag Öffnen mit|Andere App auswählen aus. Selektieren Sie dort die gewünschte Anwendung und setzen Sie einen Haken für die Option Immer diese App zum Öffnen von .bmp-Dateien verwenden (siehe Bild 3).

Festlegen der Standardapp für eine Dateiendung

Bild 3: Festlegen der Standardapp für eine Dateiendung

Bilddatei in verschiedenen Formaten speichern

Die Save-Methode bietet eine Überladung an, mit der Sie mit dem ersten Parameter den Namen der zu erstellenden Datei übergeben und mit dem zweiten das Bildformat. Hierfür können Sie die folgenden Werte angeben, die Sie über die Auflistung Imaging.ImageFormat finden:

  • Bmp: Speichert das Bild im Bitmap-Format.
  • Emf: Speichert das Bild im EMF-Format.
  • Gif: Speichert das Bild im GIF-Format.
  • Jpeg: Speichert das Bild im JPEG-Format.
  • Png: Speichert das Bild im PNG-Format.
  • Tiff: Speichert das Bild im TIFF-Format.
  • Wmf: Speichert das Bild im WMF-Format.

Wenn wir also beispielsweise ein Bild im PNG-Format speichern wollen, nutzen wir den folgenden Aufruf der Save-Methode:

bmp.Save(strPfad & "test.png",Imaging.ImageFormat.Png)

Was ist ein Bitmap

Ein Bitmap ist eine rechteckige Matrix aus wiederum viereckigen Elementen, die Pixel genannt werden. Für jedes Pixel wird ein Farbwert festgelegt. Eine Datei, die ein Bitmap enthält, besteht aus einigen Bytes mit grundlegenden Informationen über das Bitmap, die zum Beispiel die Anzahl der Pixel und die Anzahl der möglichen Farben je Pixel angeben, also die Farbtiefe.

Für die möglichen zur Verfügung stehenden Farben gibt es verschiedene Sets, vom einfachsten, das nur die beiden Farben Schwarz und Weiß enthält bis zu solchen, die 16.777.216 verschiedene Farben je Pixel darstellen können – und gegebenenfalls zusätzlich noch weitere 256 Abstufungen für einen sogenannten Alphakanal zum Definieren von Masken oder Transparenz.

 

Schreibe einen Kommentar