String length

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Hoe geraak ik aan de lenghte van een string (in px!) ?

Alvast bedankt :)
 
simpele antwoord: niet

gemiddeld antwoord: iets van een vage functie die de lengtes in px. van elke letter weet, dan een loopje erdoor haalt.

moeilijk antwoord: is waarschijnlijk een API voor. Of eigenlijk waarschijnlijk niet. Zie 'gemiddelde antwoord'.

:thumb:
 
Ik zou zeggen op de makkelijkste manier ....

string in een label zetten en de size.width opvragen, die is in pixels.
 
ja, maar een label rekt niet mee als er teveel characters in staan... want ik denk dat het voor iets in die richting is.

:thumb:
 
Ik weet niet hoeveel characters jij bedoelt , maar 32768 pixels (ongv. 6500 standaard characters) in de breedte kan ik niet aan met mijn monitor hoor?
 
ja, maar een label rekt niet mee als er teveel characters in staan... want ik denk dat het voor iets in die richting is.

:thumb:

Dat kan wel door de "AutoSize=true" te zetten!
Om de breedte in pixels te krijgen moet je dan ook nog "ScaleMode" op "3 - pixel" zetten.
Ik vind het trouwens een zeer creatieve oplossing :D:thumb:
 
Heb nu deze code :)
Code:
        Public ReadOnly Property LenghtPx() As Int32
            Get
                With New Label
                    .Width = 0
                    .AutoSize = True
                    .Text = Me.Text
                    LenghtPx = .Width
                End With
            End Get
        End Property

Nu wil ik hiermee een functie maken die een string can truncaten na een bepaalde lengte in px. Iemand een idee hoe ik kan bepalen welke chars binnen het bereik vallen en welke er getruncate moeten worden?
 
De code uit de bovenstaande post werkt niet :(

Iemand een idee waarom die niet werkt, of een suggestie hoe ik na een lengte in px truncate?
 
Misschien schijnt dit een ander licht op je code
deze methode meet echt de .width en .height van je string. Die later wordt getekend maar die hoeft je natuurlijk niet te gebruiken.

Code:
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Dim mijnString As String = "TESTMIJ"
        Dim mijnSize As SizeF = e.Graphics.MeasureString(mijnString, Me.Font)
        e.Graphics.DrawString(mijnString, Me.Font, Brushes.Black, 100, 50)
    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan