【问题标题】:Windows Forms: Obtain window size to fit a picture box containing an imageWindows 窗体:获取窗口大小以适合包含图像的图片框
【发布时间】:2015-10-16 06:09:56
【问题描述】:

我有一个Form,它包含一个Panel(锚定到所有四个边),其中包含一个PictureBox(也锚定到Panel 的所有四个边),Label 在@上方987654326@。 PanelAutoScroll 设置为 true,PictureBox 包含未缩放的图像并将 SizeMode 设置为 AutoSize,因此图像永远不会重新缩放,并且如果 PictureBox/@ 会自动出现滚动条987654333@ size 不允许整个图像(如我所愿)。

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

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

非常感谢。

【问题讨论】:

  • 究竟在什么构造函数中?你是如何加载图像的?表单加载?
  • 抱歉,关于表单加载事件 - 更新问题。谢谢。
  • 只需将表单的 AutoSize 属性设置为 True,它就会自动增长以适应自动调整大小的图片框。
  • 这是个好主意。虽然,您需要一种方法来确定它是否太大。最大尺寸可以解决这个问题。发表一个答案,我会投票。
  • Arg - 我忘记了 PictureBox 位于带有 AutoScroll 的面板中(我如何自动获取滚动条)。使用面板中设置的 AutoSize 进行测试...

标签: c# winforms resize window picturebox


【解决方案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 在 cmets 中指出的那样:“只需将表单的 AutoSize 属性设置为 True,它就会自动增长以适应自动调整大小的图片框”

这与设置表单的最大大小一起应该适合你。

【讨论】:

    【解决方案2】:

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

    我在设计器中将PanelFormAutoSize 设置为true。这会导致 PanelForm 在加载前调整大小,以便整个图像适合窗口。然后在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;
    

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

    非常感谢 KoBE 和 Hans Passant。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多