簡體   English   中英

使用帶有MaximumSize的WinForms Dock; 我希望它居中而不是左上方

[英]using WinForms Dock with MaximumSize; I want it centered not top left

我有一個PictureBox停靠在一個較大的控件中。 PictureBox設置為縮放我的圖像,但是我不想將圖像縮放為大於原始圖像。 因此,我的PictureBox具有最大尺寸設置。 只要容器小於圖片框,圖像就可以了。 當容器擴展超出PicutreBox的最大大小時,很明顯,圖片框被綁在左上方。 我希望框在父級中垂直和水平居中。 如何使Dock行為從中心而不是左上方填充?

使用PictureBox的布局錨點屬性。 您需要將其設置為“上,左,下,右”,而不是使用Dock.Fill。 您可以在PictureBox的屬性窗口中進行設置:

位置和布局屬性

錨點對接的優點:(在本例中為PictureBox)容器可以放置在任何地方,但仍相對於父面板/容器中的其他組件。 您可以僅對Layouts(不同的面板)使用Dock.Fill進行此操作。

我認為您正在尋找的是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;

經過進一步思考,我使用以下代碼行解決了該問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM