Public @H_301_4@Class frmDl
@H_301_4@Dim x @H_301_4@As @H_301_4@Single = 0
@H_301_4@Dim y @H_301_4@As @H_301_4@Single = 0
@H_301_4@Private @H_301_4@Sub frmDl_Load(@H_301_4@ByVal sender @H_301_4@As System.Object,@H_301_4@ByVal e @H_301_4@As System.EventArgs) @H_301_4@Handles @H_301_4@MyBase.Load
x = @H_301_4@Me.Width
y = @H_301_4@Me.Height
setTag(@H_301_4@Me)
'递归取控件的原始大小和位置,用tag来纪录
Private @H_301_4@Sub setTag(@H_301_4@ByVal obj @H_301_4@As @H_301_4@Object)
@H_301_4@For @H_301_4@Each con @H_301_4@As Control @H_301_4@In obj.Controls
con.Tag = con.Width & ":" & con.Height & ":" & con.Left & ":" & con.Top & ":" & con.Font.Size
'如果是容器控件,则递归继续纪录
If con.Controls.Count > 0 @H_301_4@Then
setTag(con)
End @H_301_4@If
@H_301_4@Next
'递归重新设定控件的大小和位置
Private @H_301_4@Sub setControls(@H_301_4@ByVal newx @H_301_4@As @H_301_4@Single,@H_301_4@ByVal newy @H_301_4@As @H_301_4@Single,@H_301_4@ByVal obj @H_301_4@As @H_301_4@Object)
@H_301_4@For @H_301_4@Each con @H_301_4@As Control @H_301_4@In obj.Controls
con.AutoSize = @H_301_4@False
@H_301_4@Dim mytag() @H_301_4@As @H_301_4@String = con.Tag.ToString.Split(":")
con.Width = mytag(0) * newx
con.Height = mytag(1) * newy
con.Left = mytag(2) * newx
con.Top = mytag(3) * newy
'计算字体缩放比例,缩放字体
Dim currentSize @H_301_4@As @H_301_4@Single = (mytag(1) * newy * mytag(4)) / mytag(1)
con.Font = @H_301_4@New Font(con.Font.Name,currentSize,_
con.Font.Style,con.Font.Unit)
'如果是容器控件,则递归继续缩放
If con.Controls.Count > 0 @H_301_4@Then
setControls(newx,newy,con)
@H_301_4@Next
@H_301_4@Private @H_301_4@Sub frmDl_Resize(@H_301_4@ByVal sender @H_301_4@As @H_301_4@Object,@H_301_4@ByVal e @H_301_4@As System.EventArgs) @H_301_4@Handles @H_301_4@Me.Resize
'得到现在窗体的大小,然后根据原始大小计算缩放比例
Dim newx @H_301_4@As @H_301_4@Single = @H_301_4@Me.Width / x
@H_301_4@Dim newy @H_301_4@As @H_301_4@Single = @H_301_4@Me.Height / y
setControls(newx,@H_301_4@Me)
End @H_301_4@Class