.net - 调整 .NET Windows 窗体的大小,使控件(图片框)达到所需的大小,并在调整大小时保持纵横比

标签 .net vb.net winforms user-interface picturebox

我正在尝试使用一个简单的工具条和一个图片框制作一个.Net WinForms 窗口。

   Dim img As Image = Image.FromStream(New MemoryStream(File.ReadAllBytes(filename)))
   PictureBox1.Image = img
   PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
   ratio = img.Height / img.Width

图像显示正常,我的问题是我试图使表单大小正确,以正确的分辨率和正确的宽高比显示图像。而且因为表单除了图片框之外还有更多内容,我不确定如何调整大小。

如果我这样做

Me.Width = Me.Height * Ratio 

那么由于窗口边框和工具条所需的空间,比例不准确。如何设置窗体初始大小以使图片框大小与图像尺寸完全相等?

发现答案是:

Me.ClientSize = New System.Drawing.Size(img.Width, img.Height + ToolStrip1.Height)

要在保持宽高比的同时调整大小,代码为:

Dim ratio as Double

Private Sub Form_Shown(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
  Dim img As Image = Image.FromStream(New MemoryStream(File.ReadAllBytes(_filename)))
  PictureBox1.Image = img
  PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
  Image_ratio = img.Height / img.Width

  Me.ClientSize = New System.Drawing.Size(img.Width, img.Height + ToolStrip1.Height)
  Me.Activate()

  AddHandler Me.Resize, AddressOf Form_SizeChanged
End Sub

Private Sub Form_SizeChanged(sender As Object, e As EventArgs)
  'Resize while maintaining aspect ratio
   Me.ClientSize = New System.Drawing.Size(PictureBox1.Height / Image_ratio, Me.ClientSize.Height)
End Sub

最佳答案

发现答案是:

Me.ClientSize = New System.Drawing.Size(img.Width, img.Height + ToolStrip1.Height)

要在保持宽高比的同时调整大小,代码为:

Dim ratio as Double

Private Sub Form_Shown(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown
  Dim img As Image = Image.FromStream(New MemoryStream(File.ReadAllBytes(_filename)))
  PictureBox1.Image = img
  PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
  Image_ratio = img.Height / img.Width

  Me.ClientSize = New System.Drawing.Size(img.Width, img.Height + ToolStrip1.Height)
  Me.Activate()

  AddHandler Me.Resize, AddressOf Form_SizeChanged
End Sub

Private Sub Form_SizeChanged(sender As Object, e As EventArgs)
  'Resize while maintaining aspect ratio
   Me.ClientSize = New System.Drawing.Size(PictureBox1.Height / Image_ratio, Me.ClientSize.Height)
End Sub

关于.net - 调整 .NET Windows 窗体的大小,使控件(图片框)达到所需的大小,并在调整大小时保持纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22094880/

相关文章:

c# - 使用 EPPlus 加载大量 Excel 数据

regex - 删除 3 个特定字符,如果存在于字符串 VB.net 的开头

c# - 如何使用 C# 获取当前事件窗口的标题?

.net - 在 .Net Core 应用程序中使用 SharePoint CSOM

c# - 我们可以在 Windows 应用程序中使用 Jquery 吗?

.net - 如何获取Form的所有TextBox控件

vb.net - Datediff() 函数在 VB.NET 中未获得预期结果

c# - 多选文件夹和文件

c# - 改进 Linq 查询

.net - .NET 中的 CIL、CLS 和 CTS