Sub SetTextSize(lbl As Label, txt As String)
Private cvs As Canvas
Private bmp As Bitmap
Private dt As Float
Private limit = 0.5 As Float
Private h, w As Int
bmp.InitializeMutable(2dip, 2dip)
cvs.Initialize2(bmp)
lbl.Text = txt
lbl.TextSize = 300
dt = lbl.TextSize
h = stu.MeasureMultilineTextHeight(lbl, txt)
' h = cvs.MeasureStringHeight(txt, lbl.Typeface, lbl.TextSize) 'gibt falsche Werte
w = cvs.MeasureStringWidth(txt, lbl.Typeface, lbl.TextSize)
Do While dt > limit Or h > lbl.Height Or w > lbl.Width
dt = dt / 2
' h = cvs.MeasureStringHeight(txt, lbl.Typeface, lbl.TextSize)
h = stu.MeasureMultilineTextHeight(lbl, txt)
w = cvs.MeasureStringWidth(txt, lbl.Typeface, lbl.TextSize)
Log(h & " / " & w & " / " & lbl.TextSize)
If h > lbl.Height Or w > lbl.Width Then
lbl.TextSize = lbl.TextSize - dt
Else
lbl.TextSize = lbl.TextSize + dt
End If
Loop
End Sub