使用带有MaximumSize的WinForms Dock;我希望它不在左上方

时间:2013-11-11 19:03:08

标签: c# .net winforms picturebox

我有一个PictureBox与Fill停靠在一个更大的控件内。 PictureBox设置为缩放我的图像,但我不想缩放比原始图像更大的图像。因此,我的PictureBox具有最大尺寸设置。只要容器小于图片框,图像就可以了。随着容器扩展超出PicutreBox的最大尺寸,很明显图片框被绑在左上角。我宁愿让盒子在父母中垂直和水平居中。如何从中心而不是左上角填充Dock行为?

3 个答案:

答案 0 :(得分:2)

使用PictureBox的 Layout Anchor 属性。您需要将其设置为“上,左,下,右”,而不是使用Dock.Fill。您可以在PictureBox的属性窗口中设置它:

position and layout properties

锚点抵靠对接的优点:(在本例中为PictureBox)容器可以放置在任何地方,但仍然相对于父面板/容器中的其他组件。你可以使用Dock.Fill只使用Layouts(不同的面板)。

答案 1 :(得分:2)

我认为你所寻找的是Anch的无风格样式,这将使控件“浮动”在控件的中间。但问题是,现在你必须“最初”将它自己集中在一起:

PictureBox pb = new PictureBox();
pb.SizeMode = PictureBoxSizeMode.AutoSize;
pb.Anchor = AnchorStyles.None;
pb.Image = bmp;
pb.Location = new Point((this.ClientSize.Width / 2) - (pb.Width / 2),
                          (this.ClientSize.Height / 2) - (pb.Height / 2));

this.Controls.Add(pb);
this.AutoScrollMinSize = pb.Size;

答案 2 :(得分:0)

经过深思熟虑,我用这行代码解决了这个问题:

_box.SizeChanged += (sender, args) => _box.SizeMode = _box.Width < _cross.Width || _box.Height < _cross.Height ? PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;