vb.net 控件(包括字体)随窗体按比例缩放

前端之家收集整理的这篇文章主要介绍了vb.net 控件(包括字体)随窗体按比例缩放前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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)

@H_301_4@End @H_301_4@Sub

'递归取控件的原始大小和位置,用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

@H_301_4@End @H_301_4@Sub

'递归重新设定控件的大小和位置

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@End @H_301_4@If

@H_301_4@Next

@H_301_4@End @H_301_4@Sub

@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)

@H_301_4@End @H_301_4@Sub

End @H_301_4@Class

猜你在找的VB相关文章