Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
In zwei weiteren Artikeln haben wir beschreiben, wie man mit dem Bitmap- und dem Graphics-Objekt arbeitet, um Bilddateien zu erstellen und diese mit einzelnen Pixeln oder auch mit Linien, Formen und Kurven füllt. Im vorliegenden Artikel gehen wir noch einen Schritt weiter und schauen uns an, wie sich Text in Bitmaps einfügen lassen und welche Möglichkeiten sich für ihre Platzierung und Ausrichtung ergeben.
Vorbereitende Informationen
Die beiden weiteren Artikel heißen Bitmaps programmieren mit VB.NET (www.datenbankentwickler.net/297) und Zeichnen in Bitmaps mit der Graphics-Klasse (www.datenbankentwickler.net/298). Hier finden Sie die grundlegenden Informationen und Techniken, auf die wir auch in diesem Artikel zugreifen.
Genau wie in den oben genannten Artikeln verwenden wir auch in diesem Artikel LINQPad als Spielwiese zum Ausprobieren der Beispiele – dort finden Sie auch Informationen zur Vorbereitung von LINQPad für das Reproduzieren unserer Beispiele. Wenn Sie LINQPad bereits installiert haben, können Sie einfach die Datei Graphics-Programmierung_Texte.linq aus dem Download zu diesem Artikel per Doppelklick öffnen und finden alles Notwendige.
Texte einfügen
Anlass für diesen und die vorherigen Artikel war eine Anfrage eines Kunden, der eigentlich mit Access arbeitet und dort in einem Bericht Label für Behälter ausdrucken sollte, wobei der Text sich in einer Raute befindet. Aus Platzgründen wollte er diese Raute aber um 45° drehen, sodass er ein Quadrat erhält, in dem jedoch der Text um 45° gekippt enthalten ist. Das wiederum kann man mit Access-Berichten nicht abbilden. Die Idee war dann, die komplette Raute mit Text direkt um 45° gekippt in einer Bilddatei abzubilden, die man dann über die Datensatzquelle und ein Bild-Steuerelement in den Bericht einbinden kann.
Welche Möglichkeiten bietet nun also .NET zum Einfügen von Texten in Bilddateien Schauen wir uns zunächst ein einfaches Beispiel an:
Sub TextInBitmap_Simple Dim strFilename As String = "TextInBitmap.png" Dim bmp As New Bitmap(480, 480) Dim objGraphics As Graphics objGraphics = Graphics.FromImage(bmp) objGraphics.DrawString("Beispieltext", New font("Tahoma", 24), Brushes.Black, 0, 0) bmp.Save(strPath & strFilename) Process.Start(strPath & strFilename) End Sub
In diesem Beispiel definieren wir als Erstes den Dateinamen für die zu erstellende Datei. Dann erstellen wir ein neues Bitmap-Element mit einer Größe von 480×480 Pixeln. Dieses nutzen wir dann als Basis für ein neues Graphics-Element, welches das Bitmap-Element mit der FromImage-Methode referenziert. Anschließend nutzen wir bereits die DrawString-Methode, um einen Text zu dem Graphics-Objekt hinzuzufügen. Dabei übergeben wir mit dem ersten Parameter den anzuzeigenden Text, mit dem zweiten ein Objekt, das die Schriftart definiert sowie mit dem dritten den zu verwendenden “Pinsel”. Danach folgt bereits das Speichern des erstellten Bitmap-Objekts als .png-Datei. Hier nutzen wir noch die Konstante mit dem Verzeichnis, das wir zum Speichern nutzen und die wir im Modulkopf wie folgt definiert haben:
Const strPath As String = "C:\...\GraphicsTest\"
Die letzte Anweisung öffnet die standardmäßig für diesen Dateityp vorgesehene App und zeigt das erstellte Bild darin an (siehe Bild 1).
Bild 1: Ausgabe eines ersten Beispiels
Die DrawString-Methode
Die DrawString-Methode ist das Werkzeug der Klasse Graphics, wenn es um die Ausgabe von Texten geht. Sie bietet insgesamt sechs Überladungen an, von denen wir uns die wichtigsten Parameter ansehen:
- String: Zeichenfolge, die gezeichnet werden soll
- Font: Font-Objekt, das Informationen über die zu verwendende Schriftart, Schriftgröße und weitere Eigenschaften enthält
- Brush: Erwartet ein Objekt, das auf einer Implementierung der Brush-Klasse basiert. Im einfachsten Fall nutzt man einfach beispielsweise Brushes.Black für einen schwarzen “Pinsel”.
- x: x-Koordinate, an welcher der Text platziert werden soll
- y: y-Koordinate, an welcher der Text platziert werden soll
- Format: Gibt die Formatierung für den zu zeichnenden Text an wie Zeilenabstand, Ausrichtung und so weiter.
Schriftart festlegen
Um die gewünschte Schriftart festzulegen, kann man einfach ein neues Font-Objekt unter Angabe der wichtigsten Parameter erstellen. Für eine fette Schrift des Typs Courier New in der Größe 24 sieht das Erstellen eines solchen Objekts wie folgt aus:
Dim objFont As New Font("Courier New", 24, FontStyle.Bold)
Die Objektvariable objFont können wir dann einfach als zweiten Parameter der DrawString-Methode nutzen: