分類:[.NET 全般]
VB.NETに関する質問です。
TableLayoutPanelの中に画像を表示したPictureBoxが入っています。
ウインドウサイズを変えた時に、アスペクト比を変えずに
PictureBoxサイズをTableLayoutPanelのサイズにフィットさせたいと考えています。
'フォームのサイズを変更したときに、PictureBoxサイズが追随して変更するようにする
Public Sub Form1_SizeChanged() Handles MyBase.SizeChanged
Call SetPictureBox()
End Sub
Private Sub SetPictureBox()
Dim TL As Size
TL.Height = frm.TableLayoutPanel9.GetRowHeights(1) - PBox.Margin.Size.Height
TL.Width = frm.TableLayoutPanel9.GetColumnWidths(0) - PBox.Margin.Size.Width
Dim SetSize As Size
Dim BoundaryWidth As Integer = PictureBox1.Width - PictureBox1.ClientSize.Width
If TL.Height / TL.Width > 1 Then
SetSize.Width = TL.Width
SetSize.Height = CInt((SetSize.Width - BoundaryWidth) * ImageAspect) + BoundaryWidth
Else
SetSize.Height = TL.Height
SetSize.Width = CInt((SetSize.Height - BoundaryWidth) / ImageAspect) + BoundaryWidth
End If
PictureBox1.Size = SetSize
PictureBox1.Invalidate()
End Sub
こんな感じのコードでフィットさせることはできているのですが、
ウインドウサイズを変えた時に
TableLayoutPanelのサイズ変化してから少し遅れてから、
PictureBoxの中身のサイズも変化するため、少しぎこちない感じがします。
これらを同時に更新したいのですが
どのようにすれば良いですか?
Me.SuspendLayout()
Me.ResumeLayout()
の辺りを試してみたのですが
うまくいきませんでした。
どのようなコードなら良いでしょうか?
|