当前位置:首页 > 技能相关 > C#与C++ > 正文内容

C# 窗体控件等比例放大与缩小的方法

admin1年前 (2024-01-05)C#与C++6330 修订时间:2024-01-05 12:08:31

为了让程序可以根据不同显示器分辨率,在最大化的时候充满界面,难免需要等比例放大和缩小的需求,下面就是具体的修改代码:

1、定义变量

private float x;//定义当前窗体的宽度
private float y;//定义当前窗体的高度

2、定义方法

/// <summary>
/// 将控件的宽,高,左边距,顶边距和字体大小暂存到tag属性中
/// </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">设置后新的x坐标</param>
/// <param name="newy">设置后新的y坐标</param>
/// <param name="cons">递归控件中的控件</param>
private void setControls(float newx, float newy, Control cons)
{
      //遍历窗体中的控件,重新设置控件的值
      foreach (Control con in cons.Controls)
      {
           //获取控件的Tag属性值,并分割后存储字符串数组
           if (con.Tag != null)
           {
               string[] mytag = con.Tag.ToString().Split(new char[] { ';' });
               //根据窗体缩放的比例确定控件的值
               con.Width = Convert.ToInt32(System.Convert.ToSingle(mytag[0]) * newx);//宽度
               con.Height = Convert.ToInt32(System.Convert.ToSingle(mytag[1]) * newy);//高度
               con.Left = Convert.ToInt32(System.Convert.ToSingle(mytag[2]) * newx);//左边距
               con.Top = Convert.ToInt32(System.Convert.ToSingle(mytag[3]) * newy);//顶边距
               Single currentSize = System.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);
               }
            }
        }
}
 
 
/// <summary>
/// 窗体变化大小方法
/// </summary>
private void Form1_Resize(object sender, EventArgs e)
{
     float newx = (this.Width) / x;
     float newy = (this.Height) / y;
     setControls(newx, newy, this);
}

3、修改窗口主方法,原始代码如下:

public Form1()
{
     InitializeComponent();
}

修改后:

public Form1()
{
    InitializeComponent();
    x = this.Width;
    y = this.Height;
    setTag(this);
}

4、修改Size方法事件,如下图:

image.png

默认最大化:

image.png

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=380

分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。