123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- namespace UAS_KanBan
- {
- class AutoSizeControl
- {
- /// <summary>
- /// 记录所有控件
- /// </summary>
- List<Control> ctl = new List<Control>();
- /// <summary>
- /// 记录控件的初始化位置
- /// </summary>
- Dictionary<string, Point> CtlPoint = new Dictionary<string, Point>();
- /// <summary>
- /// 记录控件的初始化大小
- /// </summary>
- Dictionary<string, Size> CtlSize = new Dictionary<string, Size>();
- /// <summary>
- /// 初始化的窗体宽度
- /// </summary>
- int InitFormWidth = 0;
- /// <summary>
- /// 初始化的窗体高度
- /// </summary>
- int InitFormHeight = 0;
- /// <summary>
- /// 窗体调整时的宽度
- /// </summary>
- int AutoSizeFormWidth = 0;
- /// <summary>
- /// 窗体调整时的高度
- /// </summary>
- int AutoSizeFormHeight = 0;
- /// <summary>
- /// 自适应宽度比例
- /// </summary>
- float AutoSizeWidthRate;
- /// <summary>
- ///
- /// </summary>
- float AutoSizeHeigthRate;
- public void InitControl(Control control)
- {
- InitFormWidth = control.Width;
- InitFormHeight = control.Height;
- foreach (Control item in control.Controls)
- {
- ctl.Add(item);
- CtlPoint.Add(item.Name, item.Location);
- CtlSize.Add(item.Name, item.Size);
- if (item.Controls.Count > 0)
- {
- AddControl(item);
- }
- }
- }
- public void AddControl(Control control)
- {
- foreach (Control item in control.Controls)
- {
- ctl.Add(item);
- if (!CtlPoint.ContainsKey(item.Name))
- CtlPoint.Add(item.Name, item.Location);
- if (!CtlSize.ContainsKey(item.Name))
- CtlSize.Add(item.Name, item.Size);
- if (item.Controls.Count > 0)
- {
- AddControl(item);
- }
- }
- }
- public void AutoSize(Control control)
- {
- AutoSizeFormHeight = control.Height;
- AutoSizeFormWidth = control.Width;
- AutoSizeWidthRate = (float)(AutoSizeFormWidth * 1.0 / InitFormWidth);
- AutoSizeHeigthRate = (float)(AutoSizeFormHeight * 1.0 / InitFormHeight);
- for (int i = 0; i < ctl.Count; i++)
- {
- float AutoSizeWidthRate1 = (float)(CtlPoint[ctl[i].Name].X * 1.0 / InitFormWidth);
- float AutoSizeHeigthRate1 = (float)(CtlPoint[ctl[i].Name].Y * 1.0 / InitFormHeight);
- ctl[i].Location = new Point((int)(AutoSizeFormWidth * AutoSizeWidthRate1), (int)(AutoSizeFormHeight * AutoSizeHeigthRate1));
- if (CtlPoint.ContainsKey(ctl[i].Name + "_label"))
- {
- for (int j = 0; j < ctl.Count; j++)
- {
- if (ctl[j].Name == ctl[i].Name + "_label")
- {
- ctl[i].Location = new Point((int)(CtlPoint[ctl[i].Name + "_label"].X * AutoSizeWidthRate + ctl[j].Width + (CtlPoint[ctl[i].Name].X - CtlPoint[ctl[i].Name + "_label"].X - CtlSize[ctl[i].Name + "_label"].Width)), (int)(CtlPoint[ctl[i].Name + "_label"].Y * AutoSizeHeigthRate));
- }
- }
- }
- ctl[i].Size = new Size((int)(CtlSize[ctl[i].Name].Width * AutoSizeWidthRate), (int)(CtlSize[ctl[i].Name].Height * AutoSizeHeigthRate));
- }
- }
- }
- }
|