Rubrik: Grafik und Font · Font & Text | VB-Versionen: VB2005 - VB2015 | 17.11.15 |
Text in beliebigem Winkel ausgeben Eine universelle Routine, mit der sich ein Text in einem beliebigen Winkel ausgeben lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 5.171 |
www.tools4vb.de | System: WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Unser nachfolgender Tipp zeigt, wie sich ein beliebiger Text in einer beliebigen Schriftart um einen beliebigen Winkel (bspw. 90° gegen den Uhrzeigersinn) ausgeben lässt. Die Ausgabe kann auf einer Form, einer PictureBox oder auch auf den Drucker erfolgen - bzw. auf allen Controls/Objekten mit einem Graphics-Objekt.
Imports System.Drawing.Drawing2D ...
''' <summary> ''' Gibt einen Text in einem beliebigen Winkel aus ''' </summary> ''' <param name="gr">Graphics-Objekt, auf dem die Ausgabe erfolgen soll</param> ''' <param name="Text">Text, der ausgegeben werden soll</param> ''' <param name="x">x-Position der Text-Ausgabe</param> ''' <param name="y">y-Position der Text-Ausgabe</param> ''' <param name="Winkel">Winkel für die Text-Ausgabe (Bsp. 90, 45, ...)</param> ''' <param name="Schrift">Font-Objekt für die Text-Ausgabe</param> ''' <param name="Farbe">Farbe des Textes</param> Public Sub PrintRotatedText(ByRef gr As Graphics, ByVal Text As String, _ ByVal x As Integer, ByVal y As Integer, ByVal Winkel As Single, _ ByVal Schrift As Font, ByVal Farbe As Brush) Dim oldState As GraphicsState = gr.Save gr.ResetTransform() gr.RotateTransform(Winkel) gr.TranslateTransform(x, y, MatrixOrder.Append) gr.DrawString(Text, Schrift, Farbe, 0, 0) gr.Restore(oldState) End Sub
Aufrufbeispiele:
' Im Paint Ereignis der Form Private Sub Form1_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint PrintRotatedText(e.Graphics, "Text 90° gedreht", 200, 200, -90, _ New Font("Tahoma", 12), Brushes.BlueViolet) End Sub
' Textausgabe per Button-Click in PictureBox Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click PrintRotatedText(Graphics.FromHwnd(PictureBox1.Handle), _ "Hallo", 50, 100, -45, Me.Font, Brushes.Blue) End Sub