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

Public Class form1

    Dim x As Single = 0

    Dim y As Single = 0

 

    Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        x = Me.Width

        y = Me.Height

        setTag(Me)

    End Sub

  '得到现在窗体的大小,然后根据原始大小计算缩放比例

    Private Sub form1_Resize(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Resize

        Dim newx As Single = Me.Width / x

        Dim newy As Single = Me.Height / y

        setControls(newx, newy, Me)

    End Sub


    '递归取控件的原始大小和位置,用tag来纪录

    Private Sub setTag(ByVal obj As Object)

        For Each con As Control In obj.Controls

            con.Tag = con.Width & ":" & con.Height & ":" & con.Left & ":" & con.Top & ":" & con.Font.Size

            If con.Controls.Count > 0 Then'如果是容器控件,则递归继续纪录

                  setTag(con)

            End If

        Next

    End Sub

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

    Private Sub setControls(ByVal newx As SingleByVal newy As SingleByVal obj As Object)

        For Each con As Control In obj.Controls

            con.AutoSize = False

            Dim mytag() As 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 As Single = (mytag(1) * newy * mytag(4)) / mytag(1)  '计算字体缩放比例,缩放字体

            con.Font = New Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit)

            If con.Controls.Count > 0 Then                                                                                                                  

                setControls(newx, newy, con)

            End If

        Next

    End Sub

   End Class

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值