Winform开发的应用,窗口大小改变时,不能自动缩放布局,在窗口初始化后添加以下代码就可以解决缩放问题
public Form1()
{
InitializeComponent();
}
//初始窗体大小
private Size m_szInit;
//初始控件大小
private Dictionary<Control, Rectangle> ControlSize = new Dictionary<Control, Rectangle>();
protected override void OnLoad(EventArgs e)
{
//记录初始大小
m_szInit = this.Size;
this.GetInitSize(this);
base.OnLoad(e);
}
private void GetInitSize(Control control)
{
//记录控件大小
foreach (Control item in control.Controls)
{
ControlSize.Add(item, new Rectangle(item.Location, item.Size));
this.GetInitSize(item);
}
}
protected override void OnResize(EventArgs e)
{
//计算当前大小和初始大小的比例
float fx = (float)this.Width / m_szInit.Width;
float fy = (float)this.Height / m_szInit.Height;
foreach (var item in ControlSize)
{
item.Key.Left = (int)(item.Value.Left * fx);
item.Key.Top = (int)(item.Value.Top * fy);
item.Key.Width = (int)(item.Value.Width * fx);
item.Key.Height = (int)(item.Value.Height * fy);
}
base.OnResize(e);
}
3 条评论
你的文章充满了创意,真是让人惊喜。 https://www.4006400989.com/qyvideo/54136.html
不错不错,我喜欢看 https://www.237fa.com/
叼茂SEO.bfbikes.com