【问题标题】:Picturebox, SizeMode Zoom and paddingPicturebox、SizeMode 缩放和填充
【发布时间】:2014-02-19 09:32:23
【问题描述】:

是否可以设置 SizeMode 缩放并应用填充?

以下将起作用:

    ibPic2DLeft.SizeMode = PictureBoxSizeMode.Normal;
    ibPic2DLeft.Padding = new Padding(100, 100, 50, 50);

以下将不起作用:

        ibPic2DLeft.SizeMode = PictureBoxSizeMode.Zoom;
        ibPic2DLeft.Padding = new Padding(100, 100, 50, 50);

与缩放兼容的填充替代方案有哪些?

【问题讨论】:

  • 您想要在图像的所有侧面留出一些空间吗?我对你的问题有点不清楚
  • 我确实喜欢应用某种填充。在这一点上,我想应用什么样的填充并不重要。问题是当 sizemode 设置为缩放时我不能应用任何类型的填充
  • 那么最好创建一个小于图片框大小的缩略图,然后将其设置为正常模式。由于显而易见的原因,您不能在缩放模式下设置填充。图片将覆盖图片框的最佳部分。
  • 你完全正确。但是有没有类似padding的功能兼容缩放模式呢?
  • 很遗憾没有,没有其他功能可以这样做!顺便说一句,图片框显示的所有图像的图像大小是固定的吗?还是动态的?

标签: c# winforms


【解决方案1】:

将 PictureBox 放在 Panel 中。 将 PictureBox 设置为 Dock=Fill。 设置 PictureBox SizeMode=Zoom。 将填充应用到面板。

【讨论】:

    【解决方案2】:

    你最好采用这种方法,当你的图像尺寸小于图片框的大小时,你可以使用普通模式,当你的图片尺寸大于图片框时,你可以使用缩放模式。这是我过去为我的应用程序解决方案找到的最佳动态方法。

    Image oImg = yourImage;
    
    if ((oImg.Height > ibPic2DLeft.Height | oImg.Width > ibPic2DLeft.Width)) {
        ibPic2DLeft.SizeMode = PictureBoxSizeMode.Normal;
    } else {
        ibPic2DLeft.SizeMode = PictureBoxSizeMode.Zoom;
    }
    

    【讨论】:

    • 这是一段很好的代码,它可以工作,尽管它不是我问题的答案。谢谢你的努力;)
    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2015-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多