更大的图像适应于picturebox

10

如您所见,第一张图片的尺寸为(1024*768),并且在picturebox中正确显示,而在第二种情况下,图片尺寸为(1600*900),仅显示了picturebox的一半,剩余部分未显示。因此,无论图片大小如何,我都希望将其适配到picturebox中,并对其进行缩放以使其完全显示。那么我该怎么做呢?另外,当图片加载到picturebox中时,我需要自动调整picturebox的大小,就像我们在lightbox效果中看到的那样。

不胜感激,谢谢!

以下是我所获取的内容。

enter image description here

enter image description here

http://www.lokeshdhakar.com/projects/lightbox2/-------->示例。

3个回答

11
如果是WinForms应用程序,您可以将PictureBox的SizeMode属性设置为PictureBoxSizeMode.Zoom。请注意,这会增大较小图像的大小以填充框架,因此您可能需要先测量图像,以检查任一边是否过长,然后将SizeMode设置为PictureBoxSizeMode.Zoom或PictureBoxSizeMode.Normal。

是的,我已经做到了并且也起作用了,但是我需要显示它们的实际宽度和高度,同时我还需要缩放图像以使其适合其中,因为我已经给出了一个类似于灯箱的链接示例,我需要实现这个功能。 - user676589
1
@volety:在你的问题中,你提到需要对它们进行缩放。你不能同时缩放并保持它们的实际大小。 - Fredrik Mörk
我需要在picturebox中添加一个简单的动画,使其扩展到图像的大小,那么我该怎么做呢? - user676589
感谢Fredik的帮助,你能否提供任何链接给我?我能将我的VB.net项目转换为WPF吗? - user676589
@volety:抱歉,我从未做过这件事,所以我不知道任何相关工具。 - Fredrik Mörk
显示剩余2条评论

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

结束子程序


2

两种最简单的方法将图像适应于任何大小的PictureBox:

-将图像设置为背景图像 或 -将其设置为picturebox图像,然后将sizemode设置为StretchImage

1.背景图像

-使用PictureBox的BackgroundImage属性

        picturebox.BackgroundImage = Image.FromStream(New IO.MemoryStream(CType(data, Byte())))

-然后将其BackgroundImageLayout设置为stretch,如下所示:

        picturebox.BackgroundImageLayout = ImageLayout.Stretch
  1. Image -use the Image property of the PictureBox

    picturebox.Image = Image.FromStream(New IO.MemoryStream(CType(data, Byte())))
    

-然后将其sizeMode设置为StretchImage,如下所示:

    picturebox.SizeMode = PictureBoxSizeMode.StretchImage

这将使任何图片/图像/画布笔画(转换为字节数组)根据图片框的高度和宽度适合。
希望这能帮到您 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接