C#窗体最大化最小化等比例缩放

不废话,直接代码

using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;/// <summary>/// 20200620 likewei for the windows maxsize/// </summary>namespace WindowsFormsApp1{ public class WindowZoom { private float x;//当前窗体的宽度 private float y;//当前窗体的高度 public void SetForm(Control form) { x = form.Width; y = form.Height; SetTag(form); } public void SetReSize(Control form) { float reSizeX = (form.Width) / x; float reSizeY = (form.Height) / y; SetControls(reSizeX, reSizeY, form); } private void SetTag(Control controls) { foreach (Control ctr in controls.Controls) { ctr.Tag = ctr.Width + ";" + ctr.Height + ";" + ctr.Left + ";" + ctr.Top + ";" + ctr.Font.Size; if (ctr.Controls.Count > 0) { SetTag(ctr); } } } private void SetControls(float reSizeX, float reSizeY, Control controls) { //遍历窗体中的控件,重新设置控件的值 foreach (Control ctr in controls.Controls) { //获取控件的Tag属性值,并分割后存储字符串数组 if (ctr.Tag != null) { string[] mytag = ctr.Tag.ToString().Split(new char[] { ; }); //根据窗体缩放的比例确定控件的值 ctr.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * reSizeX);//宽度 ctr.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * reSizeY);//高度 ctr.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * reSizeX);//左边距 ctr.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * reSizeY);//顶边距 Single currentSize = System.Convert.ToSingle(mytag[4]) * reSizeY;//字体大小 ctr.Font = new Font(ctr.Font.Name, currentSize, ctr.Font.Style, ctr.Font.Unit); if (ctr.Controls.Count > 0) { SetControls(reSizeX, reSizeY, ctr); } } } } }}

 

使用

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApp1{ public partial class Form1 : Form { WindowZoom windowZoom = new WindowZoom(); public Form1() { InitializeComponent(); windowZoom.SetForm(this); } private void Form1_Load(object sender, EventArgs e) { } private void Form1_Resize(object sender, EventArgs e) { windowZoom.SetReSize(this); } }}

 

相关文章