vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Korrekte Stringausgabe 
Autor: Ne kölsche Jung
Datum: 14.09.12 19:17

Beim der im nachfolgenden Code wird ein markierte Text ausgegeben.
Dabei bewegen sich einige Buchstaben bei dem rechts markierten Teilstring.
Ich habe dort schon mit verschiedenen Einstellungen einige Versuche gemacht.
Auch eine Ausgabe mir RectangleF hat hierbei nicht gehofen. Schlimmer wird es
wenn anstatt Single Integer benutzt wird. Habe aber auch hier keine bessere
Lösung gefunden.
Bei dem Test im unteren Beispiel eine PictureBox auf Form bringen und mit
der Maus drüber fahren.

Jürgen

Option Strict Off
 
Public Class Form1
 
    Dim sStr As String = "Bitte Maus hin und her bewegen. Warum bewegen sich" & _
      "beim selektierten Text einige Buchstaben."
    Dim oFont As Font = New Font("Courier New", 13)
    Dim strFormat As New StringFormat(StringFormat.GenericTypographic) With _
      {.FormatFlags = StringFormatFlags.MeasureTrailingSpaces}
    Dim iPos As Integer
 
    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles _
      Me.Load
        Me.Size = New Size(1200, 120)
        Me.Left = 100
        PictureBox1.Location = New Point(0, 0)
        PictureBox1.Size = New Size(Me.ClientRectangle.Width, _
          Me.ClientRectangle.Height)
    End Sub
 
    Private Sub PictureBox1_MouseMove(sender As Object, e As _
      System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        iPos = e.X \ CInt(Me.CreateGraphics.MeasureString("X", oFont, _
        Integer.MaxValue, strFormat).Width)
        If iPos > sStr.Length Then iPos = sStr.Length
        PictureBox1.Invalidate()
    End Sub
 
    Private Sub PictureBox1_Paint(sender As Object, e As _
      System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim gra As Graphics = e.Graphics
        Dim iCharW As Single = Me.CreateGraphics.MeasureString("X", oFont, _
          Integer.MaxValue, strFormat).Width
        Dim iMitte As Integer = sStr.Length \ 2
        Dim iCenter As Single = iCharW * iMitte
        Dim iLeft As Integer
        Dim iRight As Integer
 
        'Zeile ausgeben
        gra.DrawString(sStr, oFont, Brushes.Black, 0, 20, strFormat)
 
        If iPos < iMitte Then
            iLeft = iPos
            iRight = iMitte
        ElseIf iPos > iMitte Then
            iLeft = iMitte
            iRight = iPos
        Else
            Exit Sub
        End If
 
        'Text markieren
        Dim iX As Single = iLeft * iCharW
        Dim iWidth As Single = (iRight - iLeft) * iCharW
 
        gra.FillRectangle(Brushes.Blue, iX, 20, iWidth, 25)
        gra.DrawString(sStr.Substring(iLeft, iRight - iLeft), oFont, _
          Brushes.White, iX, 20, strFormat)
    End Sub
End Class

_______________________________________________________________
Jeder Mensch ist anders. Darum nimm jeden Menschen so wie er ist.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Korrekte Stringausgabe1.463Ne kölsche Jung14.09.12 19:17
Re: Korrekte Stringausgabe917ModeratorDaveS16.09.12 17:41
Re: Korrekte Stringausgabe922Ne kölsche Jung16.09.12 18:15
Re: Korrekte Stringausgabe929ModeratorDaveS16.09.12 19:04
Re: Korrekte Stringausgabe881Ne kölsche Jung16.09.12 20:08
Re: Korrekte Stringausgabe947ModeratorDaveS16.09.12 21:23

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-2024 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