Gedrehten Text anzeigen mit VB .NET

Veröffentlicht: 13. Mai 2003 | Aktualisiert: 11. Nov 2004

Von Mathias Schiffer

Im MSDN Quickie "Gedrehten Text anzeigen" haben Sie erfahren, wie Sie mit Visual Basic 6.0 einen Text in einem beliebigen Winkel ausgeben können. Mit VB .NET erreichen Sie den gleichen Effekt nicht nur einfacher, sondern noch dazu wesentlich umfassender.

Hilfreich beim Ansinnen, unter .NET eine Grafikausgabe in einem beliebigen Winkel vorzunehmen, ist die Klasse Graphics im Namespace System.Drawing. Mit ihrer Methode RotateTransform können Sie nicht nur für gedrehte Texte sorgen, sondern beliebige Grafikausgaben in einem Drehwinkel vornehmen: Sie setzen einfach nicht den Pinsel schräg an, sondern drehen die gesamte Leinwand!

Für eine Windows Form erzeugen Sie ein zugehöriges Graphics-Objekt über ihre Funktion CreateGraphics. Diese Zeichenfläche können Sie nun unter Angabe einer Gradzahl mithilfe der Methode RotateTransform drehen.

Auf die so gedrehte Zeichenfläche können Sie nun beispielsweise mithilfe der Graphics-Methode DrawString einen Text zeichnen. Hierfür benötigen Sie neben einem Font-Objekt zur Aufnahme der Schriftartinformationen auch noch einen Zeichenpinsel zur Aufnahme der Farbinformationen - im einfachsten Fall verwenden Sie einen einfarbigen Brush (SolidBrush), doch selbst Texturen sind auf einfache Weise möglich (im Sourcecode finden Sie ein auskommentiertes Beispiel hierfür).

Nach dem Zeichnen mithilfe der Graphics-eigenen Methoden und Funktionen setzen Sie die Rotation des betroffenen Graphics-Objekts ganz einfach wieder zurück, indem Sie seine Methode ResetTransform aufrufen.

' Neues Font-Objekt erzeugen 
Dim objFont = New Font("Arial", 12, FontStyle.Bold) 
' Einen Pinsel definieren (hier: einfarbig blau) 
Dim objBrush As SolidBrush = New SolidBrush(Color.Blue) 
' Statt eines einfarbigen Pinsels kann z.B. auch 
' eine Grafik als Textur verwendet werden: 
'Dim objBrush = New TextureBrush(New Bitmap("javascript:void(null);")) 
' Graphics-Objekt für die Windows Form erzeugen 
Dim objGraph As Graphics = Me.CreateGraphics 
With objGraph 
  ' Kantenglättung für die Grafikausgabe festlegen 
  .SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias 
  ' Rotierte Ausgabe in 10-Grad-Schritten: 
  Dim nDegrees As Integer 
  For nDegrees = 0 To 90 Step 10 
 ' Rotation des Grphics-Objekts festlegen 
 .RotateTransform(nDegrees) 
 ' Einen Text zeichnen 
 .DrawString("ROTIERTER TEXT", _ 
 objFont, _ 
 objBrush, _ 
 Me.Width / 2, 0) 
 ' Rotation zurücksetzen 
 .ResetTransform() 
  Next nDegrees 
End With 
objGraph.Dispose()