关于label的字体大小自动调整.解决思路

关于label的字体大小自动调整.
程序需要用到自动加载LABEL,加载的LABEL有大有小.里面的字体一般只是按设定的大小.这样程序就很不美观.

有什么方法可以让程序的LABEL宽度和高度发生变化里自动调整LABEl里面字体的大小呢.有做过的提提思路也可

------解决方案--------------------
也不是很难,首先要指定一种字体,比如宋体(因为即使相同的字号,不同字体的大小也相差很多,因此先要指定一种字体作为标准,w为了兼容起见选择比较常见的字体)
然后估算一下该字体下不同字号的宽度(这个基本是和字体号成正比的)
然后按照你的LABEL宽度,除以字符串的长度,然后根据这个商的结果在上面字号中挑选一个最接近的字体号


------解决方案--------------------
还有个办法就是不管字体号和字体,直接将LABEL的AUTOSIZE设为TRUE,LABEL就会自动调节宽度了,当然,你要预留好位置,避免发生重叠的可能。
------解决方案--------------------
20_____字号与界面显示的关系是20————————字号1=20界面显示单位
------解决方案--------------------
.................................
------解决方案--------------------
添加控件数组,先把LabelA(0)的属性设置好,然后再Load LabelA(1)就可以了。
------解决方案--------------------
AUTOSIZE设为TRUE
------解决方案--------------------
友情帮顶
------解决方案--------------------
看楼主的意思想接帖,稍候,写段代码给你参考
------解决方案--------------------
建立一个窗体,上面随便放上些控件,随便写些字,然后再代码区粘铁下面的代码。窗体resize时所有控件及控件的字体都会等比例缩放

Option Explicit


Private mlngW As Long
Private mlngh As Long
Private Type TControlInfo
ctrl As Control
Left As Single
Top As Single
Width As Single
Height As Single
FontSize As Single
End Type
Dim SaveCtrl() As TControlInfo


Private Sub Form_Initialize()
On Error Resume Next
mlngW = Me.Width
mlngh = Me.Height
'保存控件的状态
ReDim SaveCtrl(Me.Controls.Count - 1) As TControlInfo
Dim i As Integer
Dim ctrl As Control
For i = 0 To Me.Controls.Count - 1
Set ctrl = Me.Controls(i)
With SaveCtrl(i)
Set .ctrl = ctrl
.Left = ctrl.Left
.Top = ctrl.Top
.Width = ctrl.Width
.Height = ctrl.Height
.FontSize = ctrl.Font.Size
End With
Next
End Sub

Private Sub Form_Resize()
On Error Resume Next
Dim lngW As Long
Dim lngh As Long
Dim lngf As Single
Dim i As Integer

lngW = Me.Width
lngh = Me.Height


' take the lesser of the two
If (lngW / mlngW) < (lngh / mlngh) Then
lngf = (lngW / mlngW)
Else
lngf = (lngh / mlngh)
End If


For i = 0 To UBound(SaveCtrl)
With SaveCtrl(i)
If .ctrl.Left < 0 Then
.ctrl.Left = ((.ctrl.Left + 75000) * (lngW / mlngW)) - 75000
ElseIf .Left < 0 Then
.ctrl.Left = (.Left + 75000) * (lngW / mlngW)
Else
.ctrl.Left = .Left * (lngW / mlngW)
End If
.ctrl.Top = .Top * (lngh / mlngh)
.ctrl.Width = .Width * (lngW / mlngW)
.ctrl.Height = .Height * (lngh / mlngh)


If .FontSize > 0 Then
If (.FontSize * lngf) < 8 Then
If (.FontSize * lngf) > 7 Then
.ctrl.Font.Size = 7
Else
.ctrl.Font.Size = .FontSize * lngf
End If
Else