【问题标题】:Fit Image to PictureBox if PictureBox is smaller than Picture如果 PictureBox 小于 Picture,则使 Image 适合 PictureBox
【发布时间】:2016-12-17 01:08:28
【问题描述】:

我有一个PictureBox,它可以有多种不同的尺寸(取决于屏幕分辨率、窗口状态等)。当image 的任一尺寸(宽度或高度)低于PictureBox 的相应尺寸时,我想要将imagePictureBox 相匹配。

示例:如果image的宽度大于PictureBox的宽度,但image的高度小于image的高度PictureBox,它将调整image的宽度直到等于PictureBox的宽度,保持原来的纵横比,垂直居中image

如果PictureBox 大于image 两个维度,则图像只是居中。我用PictureBoxSizeMode.AutoSize 和一些代码根据imagePictureBox 的大小将image 居中。

picbx.ImageLocation = "Image path here";
picbx.SizeMode = PictureBoxSizeMode.AutoSize;
picbx.Anchor = AnchorStyles.None;
picbx.Location = new Point((picbx.Parent.ClientSize.Width / 2) - (picImage.Width / 2),
                           (picbx.Parent.ClientSize.Height / 2) - (picImage.Height / 2));
picbx.Refresh();

我不需要考虑的一件事是立即调整大小。该窗口不允许调整大小,除了初始加载之外,无需考虑任何其他情况。

我发现许多帖子似乎很接近,但没有一个完全有效。 Stretch 使image 倾斜,AutoSize 不会根据容器大小调整大小,当image 较大时,Zoom 可能会正常工作比PictureBox,但我还没有找到一种方法来防止缩放增加image 大小以适应PictureBox

因为我将它设置为 picbx.ImageLocation 而没有设置 picbx.Image 属性,所以我还没有找到一种方法来根据尺寸(宽度或高度),需要作为调整大小的参考。

【问题讨论】:

    标签: c# image winforms picturebox


    【解决方案1】:

    如果你知道PictureBoxImage的尺寸,你可以简单地设置合适的SizeMode - Zoom当图像的宽度或高度大于图片框时,CenterImage否则:

    var imageSize = picbx.Image.Size;
    var fitSize = picbx.ClientSize;
    picbx.SizeMode = imageSize.Width > fitSize.Width || imageSize.Height > fitSize.Height ?
        PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;
    

    【讨论】:

    • 正是我需要的。只需要正确的组合。谢谢!
    • 有没有办法设置缩放以适应特定尺寸而不是默认方式?就像我想切换它以缩放到宽度而不是高度来模拟一种缩放?
    • 我不这么认为。它可以缩放以适应两个维度,仍然保持原始图像比例,这是有道理的。适合特定尺寸是什么意思?装一个,剪另一个?
    • 我想出了一种方法来解决我的情况。我的意思是适合一个并为另一个强制滚动条。但我想出了一些有用的东西
    猜你喜欢
    • 2013-05-25
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    相关资源
    最近更新 更多