ユーザーフォームのサイズ変更 ③ 画像を張り付けてみる

先日はスピンボタンで、ユーザーフォームのサイズを段階的に変化させてみた。
infoment.hatenablog.com

今日はこのユーザーフォームに、画像を表示することに挑戦する。
f:id:Infoment:20200125122153j:plain

もともと今回のネタは、画像の中身をユーザーフォームに表示したいというのが切っ掛けだった。そこで今回は、Imageコントロールで画像を表示してみよう。
f:id:Infoment:20200125163328p:plain

画像は決め打ちで準備する。
f:id:Infoment:20200125163438p:plain

Private Sub UserForm_Initialize()
    ' スピンボタンの最大値と最小値を設定。
    SpinButton1.Min = 1
    SpinButton1.Max = 6
    ' 初期値。
    SpinButton1.Value = 3
    
    ' 今回追加。
    Image1.Picture = LoadPicture("C:\Temp\Sample.jpg")
End Sub

イメージのサイズは、ユーザーフォームのサイズに追従して欲しい。そこで、イメージの左上を起点として、10ポイントずつ内側に収まるようにしてみる。
f:id:Infoment:20200125165358p:plain

色々と数値を調整して、このようになった。

Private Sub SpinButton1_Change()
    Static Dict As Scripting.Dictionary
        If Dict Is Nothing Then
            Set Dict = Devisor(12)
        End If

    ' ユーザーフォームのサイズ変更。
    ' 高さは、高さの約71%(1/√2倍)とした。
    ' ※馴染みのあるAサイズ(A3やA4など)の比率。
    UserForm1.Width = unit_width * Dict(SpinButton1.Value)
    UserForm1.Height = UserForm1.Width / 2 ^ 0.5
    
    ' 今回追加。
    With Image1
        .Width = UserForm1.Width - 30
        .Height = UserForm1.Height - 72
        .Top = 40
        .Left = 10
    End With
End Sub

テスト結果は、まずまずと言ったところか。
f:id:Infoment:20200125171940g:plain

明日に続きます。

参考まで。