调整PictureBox的大小以匹配图像大小

时间:2012-07-30 15:51:52

标签: vb.net vb.net-2010

如何调整Picturebox的大小,以便在图像大小小于显示器大小时显示完整图像!我写了一个无法调整(但仍然发布代码)的代码

在点击按钮上加载图片之前的代码

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

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

3 个答案:

答案 0 :(得分:3)

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

  • 正常
  • StretchImage
  • 自动调整大小
  • CenterImage
  • 缩放

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

所以,它可能是这样的:

Dim bmp As Bitmap
bmp = New Bitmap(path)
picBox.SizeMode = PictureBoxSizeMode.AutoResize
picBox.Image = bmp

答案 1 :(得分: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

答案 2 :(得分:0)

在加载图片之前,图片框只能重新调整大小,只有它是只读后才有效!