11

我正在尝试使 PictureBox 控件中的图像根据窗口的大小自动调整其大小,但保持纵横比。到目前为止,只需设置SizeMode为即可StretchImage使图像拉伸以适合整个 PictureBox 控件。这忽略了纵横比,这不是我想要的。

是否可以保持纵横比,但仍然可以将图像拉伸到随着表单大小的变化而动态变化的最大?是否有可能做到这一点让它仍然居中?我想每次调整窗口大小时我都可以在内存中重新创建图像,但这似乎是个坏主意。

4

4 回答 4

16

我相信这就是效果PictureBoxSizeMode.Zoom。文档说:

图像的大小在保持大小比例的情况下增加或减少。

PictureBox.SizeMode你在属性上设置这个。该函数文档的“备注”部分还说:

使用 Zoom 值会导致图像被拉伸或缩小以适合 PictureBox;但是,原始的纵横比保持不变。

当然,您可以PictureBox.SizeMode在设计器的属性窗口或代码中(例如,在表单的构造函数中)设置属性:

myPictureBox.SizeMode = PictureBoxSizeMode.Zoom;

如果这不完全符合您的要求,您始终可以自己实现调整大小的逻辑。您担心的是,每次调整控件大小时在内存中重新创建图像“似乎是个坏主意”,但我不确定为什么对您来说是这样。唯一的问题是,如果您不小心销毁未使用的图形对象,例如旧的Bitmap. 这些对象不仅包含需要释放的非托管资源,而且如果您让它们泄漏,您将开始对内存施加极大的压力。

或者,为避免创建临时位图,您可以执行 PictureBox 控件可能在内部执行的操作,并使用该Graphics.DrawImage方法来处理拉伸。如果你传递一个矩形,它会自动缩放图像以适应矩形的内部。

于 2013-03-20T21:24:33.690 回答
2

将“尺寸模式”更改为Zoom. 顾名思义,“StretchImage”将拉伸它以适合图像文件。简单的消除过程会给你同样的结果。

于 2013-03-20T21:24:17.047 回答
2

根据PictureBoxSizeMode文档,您可以指定PictureBoxSizeMode.Zoom让图像保持其纵横比。它将尽可能放大,而图像的任何部分都不会溢出图片框。

您可以使用Dock属性(设置DockStyle.Fill)来让图片框调整到其容器的大小。

于 2013-03-20T21:24:28.853 回答
-4

您可以将其添加到 Web 浏览器控件。使用 Ctrl 和鼠标按钮,您可以随意放大。

于 2016-12-07T21:17:42.050 回答