0

如果图像尺寸小于显示器尺寸,如何调整图片框的大小以便它可以显示完整的图像!我写了一个无法调整大小的代码(但仍然发布代码)

单击按钮加载图像之前的代码

Dim bmp As Bitmap
bmp = New Bitmap(path)
If bmp.Width < picBox.Image.Width Then picBox.Width = bmp.Width : If bmp.Height < picBox.Image.Height Then picBox.Height = bmp.Height
picBox.Invalidate() : picBox.Refresh()
'picBox.SetBounds(x,y,width,height)

该代码不会调整图片框的大小,它只是未触及!

编辑

该表单只有 picBox 和一个 groupbox [dock enabled] 控件。

bmp = New Bitmap(dlgOpen.FileName)
picBox.SizeMode = PictureBoxSizeMode.Normal
Dim w As Integer = picBox.ClientSize.Width
Dim h As Integer = picBox.ClientSize.Height
If bmp.Width > w Then
            w = bmp.Width
End If
If bmp.Height > h Then
            h = bmp.Height
End If
If w > Me.Width - grpBox.Width Then
            w = Me.Width - grpBox.Width
End If
If h > grpBox.Height Then
            h = grpBox.Height
End If
picBox.ClientSize = New Size(w, h)
picBox.ImageLocation = dlgOpen.FileName

此代码也不会重新调整图片框的大小

4

3 回答 3

3

在 .NET 中,Public Enumeration PictureBoxSizeMode您可以更改 PictureBox 处理不同大小图像的方式:

  • 普通的
  • 拉伸图像
  • 自动尺寸
  • 中心图像
  • 飞涨

.SizeMode您可以通过该属性为当前的 PictureBox 设置它。AutoSize可能是您正在寻找的。如果它大于窗口或框架,则必须在PictureBox.Resize事件中处理此问题以调整窗口大小或重新缩放图像。

所以,它可能是这样的:

Dim bmp As Bitmap
bmp = New Bitmap(path)
picBox.SizeMode = PictureBoxSizeMode.AutoResize
picBox.Image = bmp
于 2012-07-30T15:59:36.647 回答
0
Dim bmp As New Bitmap(path)
PictureBox1.SizeMode = PictureBoxSizeMode.Normal
Dim w As Integer = PictureBox1.ClientSize.Width
Dim h As Integer = PictureBox1.ClientSize.Height
If bmp.Width > w Then
    w = bmp.Width
End If
If bmp.Height > h Then
    h = bmp.Height
End If
If w > maxWidth Then
    w = maxWidth
End If
If h > maxHeight Then
    h = maxHeight
End If
PictureBox1.ClientSize = New Size(w, h)
PictureBox1.Image = bmp
于 2012-07-30T16:10:25.933 回答
0

图片框只能在加载图像之前调整大小,之后它是只读的并且没有效果!

于 2012-08-13T07:44:19.550 回答