Tipp 0191 Text spiegeln und scheren
Autor/Einsender:
Datum:
  Michael Werner
22.05.2009
Entwicklungsumgebung:   VB.Net 2008
Framework:   2.0
Texte zeichnet man mit der DrawString-Methode des GDI-Graphics-Objekts der die Parameter für Font, FontSize, Brush übergeben werden. Diese Faktoren spielen bei der Positionierung des Textes eine wichtige Rolle.
Mit der Methode MeasureString des Graphics-Objektes wird die erforderliche Größe ermittelt, und der Ursprung des Graphics-Objekts wird mit der Methode TranslateTransform neu festgelegt.
Bei Transformationen des Textes, also beim Scheren und Spiegeln, wird - vor dem Zeichnen mit DrawString - über die Methoden ScaleTransform (Spiegeln) und Transform.Shear (Scheren) die Matrix jeweils neu definiert.
 
Imports System.Drawing.Drawing2D

Public Class Form1

  Private Sub DrawReflectText(ByVal myText As String)
    Dim g As Graphics = PictureBox1.CreateGraphics()
    g.Clear(Color.Black)

    Dim textSize As SizeF
    Dim myBackBrush As Brush = Brushes.Gray
    Dim myForeBrush As Brush = Brushes.White
    Dim myFont As New Font(ComboBox1.SelectedItem.ToString, _
        NumericUpDown1.Value, FontStyle.Regular)
    Dim xLocation, yLocation As Single
    Dim textHeight As Single

     ' Die erforderliche Größe ermitteln
    textSize = g.MeasureString(myText, myFont)
     ' Positionen definieren
    xLocation = (PictureBox1.Width - textSize.Width) / 2
    yLocation = (PictureBox1.Height - textSize.Height) / 2

     ' Ursprung des Graphics-Objekts (0,0) neu festlegen
    g.TranslateTransform(xLocation, yLocation)
    textHeight = CInt(NumericUpDown1.Value * 1.5)

     ' Den Haupttext zeichnen.
    g.DrawString(myText, myFont, myForeBrush, 0, -textHeight)

     ' Spiegeln
    If RadioButton2.Checked Then
       ' Spiegeln um die y-Achse
      g.ScaleTransform(1, -1.0F)
      g.DrawString(myText, myFont, myBackBrush, 0, -textHeight)
    Else
       ' Scheren und spiegeln
      Dim myTransform As Matrix
      myTransform = g.Transform
        ' Scheren um x-Wert
      myTransform.Shear(-1, 0)
      g.Transform = myTransform
        ' Spiegeln um die y-Achse
      g.ScaleTransform(1, -1.0F)
      g.DrawString(myText, myFont, myBackBrush, 0, -textHeight)
    End If

    g.Dispose()

  End Sub
End Class
 
Weitere Links zum Thema
Text im Winkel ausgeben
Text zeichnen mit GDI+

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (19 kB) Downloads bisher: [ 512 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 20. Januar 2012