0

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

4

3 回答 3

2

我认为您正在寻找的是 None 的 Anchor 样式,这将使控件“浮动”在控件中间。但问题是,现在您必须“最初”自己将其居中:

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;
于 2013-11-11T19:17:36.043 回答
2

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

位置和布局属性

锚点对停靠的优势:(在本例中为 PictureBox)容器可以放置在任何地方,但仍与父面板/容器中的其他组件相关。您只能使用 Dock.Fill 和布局(不同的面板)来执行此操作。

于 2013-11-11T19:06:17.000 回答
0

经过进一步思考,我用这行代码解决了这个问题:

_box.SizeChanged += (sender, args) => _box.SizeMode = _box.Width < _cross.Width || _box.Height < _cross.Height ? PictureBoxSizeMode.Zoom : PictureBoxSizeMode.CenterImage;
于 2013-11-11T20:00:14.793 回答