|
ちょっとお試し。
16:9の幅:高さを保ち、
フォームとのマージンを左右に10/上下に5を確保しつつ、
フォームいっぱいに広がるボタン。
Public Class Form1
Private ReadOnly szMargin As New Size(10, 5) ' 左右/上下マージン
Private ReadOnly szRatio As New Size(16, 9) ' 幅:高さ
' フォームのクライアントサイズが変更されたらこれをやる。
Private Sub Form1_ClientSizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.ClientSizeChanged
' クライアント・サイズを取得し
Dim desiredSize As Size = Me.ClientSize
' 左右/上下マージン分縮め、
desiredSize = Size.Subtract(desiredSize, szMargin)
desiredSize = Size.Subtract(desiredSize, szMargin)
' 比率調整
If desiredSize.Height * szRatio.Width > desiredSize.Width * szRatio.Height Then
desiredSize.Height = desiredSize.Width * szRatio.Height / szRatio.Width
Else
desiredSize.Width = desiredSize.Height * szRatio.Width / szRatio.Height
End If
' ボタンの位置を決め、
Button1.Location = New Point((Me.ClientSize.Width - desiredSize.Width) / 2, _
(Me.ClientSize.Height - desiredSize.Height) / 2)
' サイズを決める。
Button1.ClientSize = desiredSize
End Sub
End Class
|