我有一个Form,它由一个Panel (锚定到所有四个方面)组成,其中包含一个PictureBox (也锚定在Panel的所有四个方面),在Panel上面有一个Label。Panel将AutoScroll设置为true,PictureBox包含未缩放的图像,并将SizeMode设置为AutoSize,因此,如果PictureBox/Form大小不允许整个图像(如我所需),则图像永远不会被重新缩放,滚动条将自动显示。
问题:如何确定表单的Load事件处理程序中的初始窗口大小,以便该窗口与图像完全匹配,在PictureBox中没有滚动条?PictureBox的图像属性已经在构造器中设置。
然后,我将(如果窗口不是太大)将初始窗口大小设置为该大小,并将窗口大小限制为该大小的最大值。
非常感谢。
发布于 2015-07-26 00:28:15
汉斯·帕桑特的评论和科比的回答结合在一起得出了我所用的答案:
在设计器中,我将Panel和Form的AutoSize设置为true。这将导致Panel,然后在加载之前调整Form的大小,以便整个图像适合窗口。然后在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和汉斯·帕桑。
发布于 2015-07-25 18:41:41
您可以尝试在设计器中设置一个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在评论中指出的:“只要将表单的AutoSize属性设置为True,它就会自动增长,以适应自动大小的picturebox。”
这与设置表单的MaximumSize一起适用于您。
https://stackoverflow.com/questions/31629684
复制相似问题