Public Sub SingleLineAutoScale(TargetView As Object , Width As Int , TextSize As Int)
Dim lbl As Label = TargetView
If getLineCount(TargetView) > 1 Then
CallSubDelayed3(Me,"SingleLineFitText",TargetView,True)
Return
Else
WidthOfLineBefore = getTextWidth(TargetView , lbl.Typeface ,TextSize)
WidthRatioBefore = WidthOfLineBefore / Width
End If
lbl.TextSize = 72
Rate = lbl.TextSize
DoEvents
WidthOfLineAfter = getTextWidth(lbl , lbl.Typeface ,lbl.TextSize)
WidthRatioAfter = WidthOfLineAfter / lbl.Width
HeightOfText = getTextHeight(lbl)
linecount = getLineCount(lbl)
Do While Rate > 0.5 Or linecount > 1 Or HeightOfText > lbl.Height Or WidthRatioAfter > WidthRatioBefore
Rate = Rate / 2
If WidthRatioAfter > WidthRatioBefore Or HeightOfText > lbl.Height Or linecount > 1 Then
lbl.TextSize = lbl.TextSize - Rate
Else
lbl.TextSize = lbl.TextSize + Rate
End If
DoEvents
WidthOfLineAfter = getTextWidth(lbl , lbl.Typeface ,lbl.TextSize)
WidthRatioAfter = WidthOfLineAfter / lbl.Width
HeightOfText = getTextHeight(lbl)
linecount = getLineCount(lbl)
Loop
End Sub