vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Text unter Winkel zeichnen (an gleicher Stelle) - Teil 2 
Autor: bauer
Datum: 15.12.09 10:47

    Public Class Util2D
 
 
 
        ''' <summary>
        ''' Schreibt einen gedrehten String in einem skalierten und gedrehten 
        ' Koordinatensystem
        ''' </summary>
        ''' <param name="pGR">Kontext in den zu zeichnen ist</param>
        ''' <param name="pText">Auszugebender Text</param>
        ''' <param name="pFont">Schriftfont</param>
        ''' <param name="pBrush">Textfarbe</param>
        ''' <param name="pPT">Ausgabepunkt</param>
        ''' <param name="pTextDocking">Position vom Text bezogen auf den 
        ' Zeichenpunkt</param>
        ''' <param name="pAngle">Drehwinkel vom Text</param>
        ''' <param name="pScaling">Skalierungsfaktor</param>
        ''' <param name="pRotation">Drehwinkel vom Koordinatensystem</param>
        ''' <remarks></remarks>
        Public Overloads Shared Sub DrawRotatedString _
                     (ByVal pGR As Graphics _
                    , ByVal pText As String _
                    , ByVal pFont As Font _
                    , ByVal pBrush As Brush _
                    , ByVal pPT As PointF _
                    , ByVal pTextDocking As TextDockingEnum _
                    , ByVal pAngle As Integer _
                    , ByVal pScaling As StyleScaling _
                    , ByVal pRotation As Integer _
                    , ByVal pFormat As System.Drawing.StringFormat _
         )
 
            'Lokale Groessen 
            Dim l_OldTransform As Drawing2D.Matrix = pGR.Transform
            Dim l_SF As New StringFormat(pFormat)
            Dim l_TextAnsatzPunkt() As PointF = {pPT}
 
 
            'Stringformatierung herstellen 
            Select Case pTextDocking
 
                Case TextDockingEnum.TopLeft
                    l_SF.LineAlignment = StringAlignment.Near
                    l_SF.Alignment = StringAlignment.Near
 
                Case TextDockingEnum.TopMiddle
                    l_SF.LineAlignment = StringAlignment.Near
                    l_SF.Alignment = StringAlignment.Center
 
                Case TextDockingEnum.TopRight
                    l_SF.LineAlignment = StringAlignment.Near
                    l_SF.Alignment = StringAlignment.Far
 
 
 
                Case TextDockingEnum.MiddleLeft
                    l_SF.LineAlignment = StringAlignment.Center
                    l_SF.Alignment = StringAlignment.Near
 
                Case TextDockingEnum.MiddleMiddle
                    l_SF.LineAlignment = StringAlignment.Center
                    l_SF.Alignment = StringAlignment.Center
 
                Case TextDockingEnum.MiddleRight
                    l_SF.LineAlignment = StringAlignment.Center
                    l_SF.Alignment = StringAlignment.Far
 
 
 
                Case TextDockingEnum.BottomLeft
                    l_SF.LineAlignment = StringAlignment.Far
                    l_SF.Alignment = StringAlignment.Near
 
                Case TextDockingEnum.BottomMiddle
                    l_SF.LineAlignment = StringAlignment.Far
                    l_SF.Alignment = StringAlignment.Center
 
                Case TextDockingEnum.BottomRight
                    l_SF.LineAlignment = StringAlignment.Far
                    l_SF.Alignment = StringAlignment.Far
 
                Case TextDockingEnum._NotSet
                    'Platzhalter fuer unbekannten Werte 
                    Throw New Exception("pTextDocking not set")
 
                Case Else
                    'Default nehmen 
 
            End Select
 
 
            'Berechne den Textansatzpunkt im evtl. Sklaierten und / oder 
            ' gedrehten Koordinatensystem
            pGR.Transform.TransformPoints(l_TextAnsatzPunkt)
 
            'Nimm eine Skalierung vom bisherigen Koordinatensystem zurueck 
            l_TextAnsatzPunkt(0).X = l_TextAnsatzPunkt(0).X / pScaling.xScaling
            l_TextAnsatzPunkt(0).Y = l_TextAnsatzPunkt(0).Y / pScaling.yScaling
 
            'Nimm die bisherigen Koordinatentransformationen zurueck 
            'Skaliere neu 
            'Verschiebe den Ursprung auf den Zeichenpunkt 
            'Drehe die Koordinatenachsen 
            pGR.ResetTransform()
            pGR.ScaleTransform(pScaling.xScaling, pScaling.yScaling)
            pGR.TranslateTransform(l_TextAnsatzPunkt(0).X, l_TextAnsatzPunkt( _
              0).Y)
            pGR.RotateTransform(pRotation - pAngle)
 
            'String ausgeben 
            pGR.DrawString(pText, pFont, pBrush, 0, 0, l_SF)
 
            'Fuer Debugging den Drehpunkt anzeigen 
            'pGR.FillEllipse(Brushes.Pink, -3, -3, 6, 6)
 
            'Alte Transformation wieder herstellen 
            pGR.Transform = l_OldTransform
 
            'Stringformater freigeben 
            l_SF.Dispose()
 
        End Sub
 
    End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Text unter Winkel zeichnen (an gleicher Stelle)2.257keco13.12.09 13:27
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.762ModeratorRalf Ehlert13.12.09 13:34
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.612keco13.12.09 13:40
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.723cookstdu13.12.09 14:01
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.572keco13.12.09 14:08
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.571GPM13.12.09 17:11
Re: Text unter Winkel zeichnen (an gleicher Stelle)1.548keco14.12.09 14:14
Re: Text unter Winkel zeichnen (an gleicher Stelle) - Teil 11.581bauer15.12.09 10:46
Re: Text unter Winkel zeichnen (an gleicher Stelle) - Teil 21.627bauer15.12.09 10:47
Re: Text unter Winkel zeichnen (an gleicher Stelle) - Teil 31.564bauer15.12.09 10:47
Re: Text unter Winkel zeichnen (an gleicher Stelle) - Teil 1...1.579bauer15.12.09 10:57

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel