Windows窗体:获取窗口大小以适合包含图像的图片框

时间:2015-07-25 18:19:31

标签: c# winforms resize window picturebox

我有一个Form,其中包含一个Panel(固定在所有四个边),包含PictureBox(也固定在Panel的所有四边), Label以上PanelPanelAutoScroll设置为true,PictureBox包含未缩放的图片,SizeMode设置为AutoSize,因此图片永远不会重新缩放并滚动条如果PictureBox / Form尺寸不允许整个图像(我想要),则会自动显示。

问题:如何在Form的Load事件处理程序中确定初始窗口大小,以便窗口完全适合图像,PictureBox中没有滚动条? PictureBox的Image属性已经在构造函数中设置了。

然后我会(如果窗口不是太大)将初始窗口大小设置为该大小,并将窗口大小调整为该大小的最大值。

非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试在设计器中设置MaximumSize,然后对表单加载进行检查:

Image i = Image.FromFile("");

if (i.Width > this.MaximumSize.Width)
    this.Width = MaximumSize.Width;
else
    this.Width = i.Width;

if (i.Height > this.MaximumSize.Height)
    this.Height = MaximumSize.Height;
else
    this.Height = i.Height;

pbImage.Image = i;

如果你不知道你想要的最大尺寸,那么你可以使用以下方式将它从屏幕尺寸开始:

Screen.PrimaryScreen.Bounds

编辑:

正如Hans Passant在评论中所指出的那样:“只需将表单的AutoSize属性设置为True即可自动增长以适应自动调整大小的图片框”

这与设置表单的MaximumSize一起应该适合您。

答案 1 :(得分:0)

Hans Passant的评论和KoBE的回答都结合起来产生了我用过的答案:

我在Designer中将LocationPoints&{39}和Panel的{​​{1}}设置为true。这会导致Form,然后在加载前调整AutoSize的大小,以便整个图像适合窗口。然后在Panel事件处理程序中,我有以下代码:

Form

这会生成一个适合表单大小的窗口,不会变得太大,如果用户缩小窗口,则会自动使用滚动条。

非常感谢KoBE和Hans Passant。