winform 中控件按分辨率 比例缩放

窗口初始化后:

点击查看代码
//获取窗口的大小,Tag随便保存的,也可以定义变量保存
            this.Tag = this.Width.ToString() + "," + this.Height.ToString();
            //这一步很重要,不能隐式的去生成这个事件,就是不能直接在属性栏里面双击自动生成,
            //因为这个SizeChanged比获取窗口大小提前执行,不然会空引用异常。
            //InitializeComponent(),组件初始化,这个必须先执行,会触发SizeChanged,窗体大小
            this.SizeChanged += new EventHandler(Form1_SizeChanged);

Form1_SizeChanged事件

点击查看代码
      public static void Form1_SizeChanged(object sender, EventArgs e)
        {
            //这一步不必多说
            string[] tmp = ((Form)sender).Tag.ToString().Split(',');
            //比例因子
            float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);
            float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]);
            //保存变化后的大小,下一次再根据这个求比例因子
            ((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height;
            //根据比例因子,重绘所有控件
            foreach (Control control in ((Form)sender).Controls)
            {
                control.Scale(new SizeF(width, heigth));
            }
        }
posted on 2024-02-27 15:00  RookieBoy666  阅读(145)  评论(0编辑  收藏  举报