[原创]C#按比例缩放窗体控件及字体
2015-11-27 14:36
621 查看
按照比例缩放窗体控件及字体,如需等比例缩放,只需将x,y的比例设置成相同即可。
为了减小误差,建议使用原始尺寸来计算比例。
代码
为了减小误差,建议使用原始尺寸来计算比例。
private float X, Y; private bool b = false; public MainForm() { InitializeComponent(); X = this.Width; Y = this.Height; SetTag(this); b = true; } protected override void OnSizeChanged(EventArgs e) { if (!b) return; float newx = (this.Width) / X; float newy = this.Height / Y; SetControls(newx, newx, this); base.OnSizeChanged(e); } /// <summary> /// 存储原始控件参数 /// </summary> /// <param name="cons"></param> private void SetTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) SetTag(con); } } /// <summary> /// 按照比例缩放控件大小及字体 /// </summary> /// <param name="newx"></param> /// <param name="newy"></param> /// <param name="cons"></param> private void SetControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { string[] mytag = con.Tag.ToString().Split(new char[] { ':' }); int width = (int)(Convert.ToSingle(mytag[0]) * newx); int height = (int)(Convert.ToSingle(mytag[1]) * newy); int x = (int)(Convert.ToSingle(mytag[2]) * newx); int y = (int)(Convert.ToSingle(mytag[3]) * newy); con.Location = new Point(x, y); con.Size = new System.Drawing.Size(width, height); Single currentSize = Convert.ToSingle(mytag[4]) * newy; con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit); if (con.Controls.Count > 0) { SetControls(newx, newy, con); } } }
代码
相关文章推荐
- POI操作Excel详解---HSSF和XSSF两种方式
- 动态调用WebService(C#) (非常实用)转载
- C#调用Mail发送QQ邮件
- C#_event_事件
- 客户端(C#)调用CXF搭建的webservice的出现一些问题记录
- C# Attribute(中)——Attribute本质论
- C#操作word文档
- C#拾遗-接口与抽象类
- C# Attribute (上)——Attribute初体验
- C#3.0之神奇的Lambda表达式和Lambda语句
- 【NCRE】——c#判断ppt中的艺术字
- c# 类中使用ResolveUrl
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变
- C#比较二个数组并找出相同或不同元素的方法
- C#Chart属性
- C#实现XSL转换的方法
- C# 托盘程序 实例 双击显示窗体,最小化到托盘
- C# 托盘程序
- C#实现DataTable映射成Model的方法(附源码)
- C# 编写Windows Service(windows服务程序)(第二种)