Vb.净缩放与最大增加,并再次返回

  • 本文关键字:返回 增加 缩放 Vb vb.net
  • 更新时间 :
  • 英文 :


我试图在最大限度上缩放窗体宽度3x高度2.5倍的控件,然后在窗体规范化时将它们返回到正常状态。这些%'s不是基于表单本身的实际增加%(控件有时只是根据表单大小而变得太大)。

On maximize看起来像:控制。规模(2.5)

但是,当你规范化时:控制。规模(-2.5)

如果结果为0,则为0。有更好的方法吗?我已经在键盘上敲了好久了。

完整代码如下:

Public Class TestMainMenu
    Dim intStaticWidth As Integer = 263         'Form design WIDTH
    Dim intStaticHeight As Integer = 157        'Form design Height
    Dim intFontSize As Integer = 8              'Default font size
    Dim intBaseHeight As Integer = 157          'Used for FONT scaling
    '--------
    Dim dblWidthPercent As Double              'Percentage of increase/decrease
    Dim dblHeightPercent As Double             'Percentage of increase/decrease
    Dim blnFormLoad As Boolean = True
    Dim blnDoOnce As Boolean = True             'Once per form flag
    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.Width = intStaticWidth
        Me.Height = intStaticHeight
        blnFormLoad = False
    End Sub
    Private Sub FormResize(sender As Object, e As System.EventArgs) Handles Me.Resize
        If blnFormLoad = True Then Exit Sub
        Dim ResizeRatio As SizeF
        Select Case Me.WindowState
            Case FormWindowState.Maximized
                If blnDoOnce = True Then
                    dblWidthPercent = Me.Width / intStaticWidth
                    dblHeightPercent = Me.Height / intStaticHeight
                    blnDoOnce = False
                    If dblWidthPercent > 3 Then
                        If dblWidthPercent > 3 Then
                            dblHeightPercent = (3 * dblHeightPercent) / dblWidthPercent
                        End If
                        dblWidthPercent = 3
                    End If
                End If
                If dblWidthPercent < 1 Then dblWidthPercent = (Math.Abs(dblWidthPercent) * -1)
                If dblHeightPercent < 1 Then dblHeightPercent = (Math.Abs(dblHeightPercent) * -1)
                ResizeRatio = New SizeF((dblWidthPercent), (dblHeightPercent))
            Case FormWindowState.Minimized
            Case FormWindowState.Normal
                If dblWidthPercent > 1 Then dblWidthPercent = (Math.Abs(dblWidthPercent) * -1)
                If dblHeightPercent > 1 Then dblHeightPercent = (Math.Abs(dblHeightPercent) * -1)
                ResizeRatio = New SizeF((dblWidthPercent), (dblHeightPercent))
            Case Else
        End Select
        For Each Control In Me.Controls
            ResizeControl(Control, ResizeRatio)
        Next
        blnFormLoad = False
    End Sub
    Private Sub ResizeControl(ByVal objControl As Control, ByVal ResizeRatio As SizeF)
        Dim dblPercent As Double
        'Reset
        intFontSize = 8
        objControl.Scale(ResizeRatio)
        Select Case Me.WindowState
            Case FormWindowState.Maximized
                dblPercent = Me.Height / intBaseHeight
                If dblPercent > 3 Then dblPercent = 3
                If dblPercent < 1 Then
                    intFontSize = (intFontSize * dblPercent) + intFontSize
                Else
                    intFontSize = (intFontSize * dblPercent)
                End If
                objControl.Font = New Font("", intFontSize, FontStyle.Regular)
            Case FormWindowState.Minimized
            Case FormWindowState.Normal
                objControl.Font = New Font("", intFontSize, FontStyle.Regular)
            Case Else
        End Select
    End Sub
    Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click
        End
    End Sub
End Class

您要按原始比例因子的倒数进行缩放,而不是按相同的幅度进行负缩放。所以你想要的不是-2.5和-3,而是(1/2.5)和(1/3),或者0.4和。333333…分别。

相关内容

最新更新