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

C# Windows窗体:获取窗口大小以适合包含图像的图片框,c#,winforms,resize,window,picturebox,C#,Winforms,Resize,Window,Picturebox,我有一个表单,它由一个面板(锚定到所有四个面)组成,其中包含一个图片盒(也锚定到面板),面板上方有一个标签。面板的AutoScroll设置为true,而PictureBox包含未缩放的图像,并且SizeMode设置为AutoSize,因此,如果PictureBox//code>表单大小不允许整个图像(如我所愿),则永远不会重新缩放图像,并自动显示滚动条 问题:如何在窗体的加载事件处理程序中确定初始窗口大小,以便窗口完全适合图像,而PictureBox中没有滚动条?PictureBox的image

我有一个
表单
,它由一个
面板
(锚定到所有四个面)组成,其中包含一个
图片盒
(也锚定到
面板
),面板上方有一个
标签
面板
AutoScroll
设置为true,而
PictureBox
包含未缩放的图像,并且
SizeMode
设置为
AutoSize
,因此,如果
PictureBox
//code>表单大小不允许整个图像(如我所愿),则永远不会重新缩放图像,并自动显示滚动条

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

然后(如果窗口不是太大)将初始窗口大小设置为该大小,并将窗口大小限制为该大小的最大值


非常感谢。

您可以尝试在设计器中设置最大大小,然后在表单加载时执行此检查:

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,它就会自动增长,以适应自动大小的picturebox”


这一点以及设置表单的最大大小应该适合您。

汉斯·帕桑的评论和科比的回答结合在一起,形成了我使用的答案:

我在设计器中将
面板
表单
自动调整大小
设置为true。这会导致在加载前调整
面板
,然后调整
表单
的大小,以使整个图像适合窗口。然后在
Load
事件处理程序中,我有以下代码:

    this.MaximumSize = this.Size;

    ... code to make sure MaximumSize isn't larger than the screen ...

    // Turn off autosize so the user can shrink the window.
    // Note: Changing AutoSize instantly changes the window size!
    c_picturePanel.AutoSize = false;
    this.AutoSize = false;

    // Restore the window size.
    this.Size = this.MaximumSize;
这将生成一个适合窗体大小的窗口,不会变大,并且在用户缩小窗口时自动使用滚动条


非常感谢科比和汉斯·帕桑特。

具体在哪方面?你是如何加载图像的?加载表单?对不起,加载表单事件-更新问题。谢谢。只需将表单的AutoSize属性设置为True,它就会自动增长以适应自动大小的picturebox。这是个好主意。不过,您需要一种方法来确定它是否太大。最大尺寸可以解决这个问题。发布一个答案,我会投票。Arg-我忘了PictureBox在一个带有AutoScroll的面板中(我是如何自动获得滚动条的)。正在使用面板中的“自动调整大小”集进行测试。。。