您可以看到第一张图片大小为(1024 * 768)并且在图片框中正确显示,在第二种情况下图片大小为(1600 * 900)并显示为一半那些图片框和剩下的就丢失了。所以我不想在图片框中放大那个图片,无论大小是多少,即使它大于图片盒的大小。我需要扩展那个Image.So我该如何那样做还有一件事是我需要在图像加载时自动调整图片框的大小,正如我们在灯箱效果中看到的那样。 http://www.lokeshdhakar.com/projects/lightbox2/ -------->示例。
任何帮助将不胜感激!
这是我得到的。
答案 0 :(得分:8)
如果是winforms应用,您可以将SizeMode
的{{1}}属性设置为PictureBox
。请注意,这会增加较小图像的大小以填充框架,因此您可能需要先测量图像,以检查边缘是否过长,然后将PictureBoxSizeMode.Zoom
设置为SizeMode
}或PictureBoxSizeMode.Zoom
。
答案 1 :(得分:3)
我知道这有明确的答案,但我为自己的一个应用程序写了这个。希望它对某人有帮助..
Private Sub ScaleImage(ByVal p As PictureBox, ByRef i As Bitmap)
If i.Height > p.Height Then
Dim diff As Integer = i.Height - p.Height
Dim Resized As Bitmap = New Bitmap(i, New Size(i.Width - diff, i.Height - diff))
i = Resized
End If
If i.Width > p.Width Then
Dim diff As Integer = i.Width - p.Width
Dim Resized As Bitmap = New Bitmap(i, New Size(i.Width - diff, i.Height - diff))
i = Resized
End If
End Sub
答案 2 :(得分:1)
将图像适合任何尺寸PictureBox的两种最简单的方法是:
- 将图像设置为背景图像 要么 - 将其设置为图片框图像,然后将sizemode设置为StretchImage
1.Background Image
- 使用PictureBox的 BackgroundImage 属性
picturebox.BackgroundImage = Image.FromStream(New IO.MemoryStream(CType(data, Byte())))
- 然后将其BackgroundImageLayout设置为拉伸,如下所示:
picturebox.BackgroundImageLayout = ImageLayout.Stretch
图像 - 使用PictureBox的图像属性
picturebox.Image = Image.FromStream(New IO.MemoryStream(CType(data, Byte())))
- 然后设置它的' sizeMode为 StretchImage 像这样:
picturebox.SizeMode = PictureBoxSizeMode.StretchImage
这将使任何图片/图像/画布笔画(转换为字节数组)根据图片框的高度和宽度拟合
希望这有助于:)