首页 > Windows开发 > 详细

窗体控件缩放-C#学习随笔

时间:2021-06-03 14:14:47      阅读:14      评论:0      收藏:0      [点我收藏+]

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Form_Controls_Scaling
{
  public partial class Scaling : Form
  {
    public Scaling()
    {
      InitializeComponent();

      this.MinimumSize = new Size(400, 400);  //设置窗体最小尺寸

    }

    #region 定义全局变量
    float origin_width; //起始窗体宽度
    float origin_height; //起始窗体高度
    #endregion

    protected override void OnLoad(EventArgs e) //窗体加载
    {
      base.OnLoad(e);

      origin_width = this.Width; //赋值起始窗体宽度
      origin_height = this.Height; //赋值起始窗体高度
      SetTag(this); //记录当前窗体控件信息
    }

    protected void SetTag(Control controls) //记录当前窗体控件信息
    {
      foreach (Control control in controls.Controls) //遍历当前窗体控件
      {
        control.Tag = control.Width + "," + control.Height + "," + control.Top + "," + control.Left + "," + control.Font.Size; //记录信息
        if (control.Controls.Count > 0) //判断是否存在子控件
        {
          SetTag(control); //记录子控件信息
        }
      }
    }

    protected override void OnResize(EventArgs e) //窗体控件大小改变
    {
      base.OnResize(e);

      float scale_Width = Width / origin_width; //计算控件宽度缩放比例
      float scale_Height = Height / origin_height; //计算控件高度缩放比例
      SetControls(scale_Width, scale_Height, this); //窗体控件缩放
    }

    protected void SetControls(float scale_Width, float scale_Height, Control controls) //窗体孔家缩放
    {
      foreach (Control control in controls.Controls) //遍历窗体控件
      {
        string[] controlTag = control.Tag.ToString().Split(‘,‘); //分割控件信息
        float newWidth = Convert.ToSingle(controlTag[0]) * scale_Width; //计算新控件宽度
        float newHeight = Convert.ToSingle(controlTag[1]) * scale_Height; //计算新控件高度
        float newTop = Convert.ToSingle(controlTag[2]) * scale_Width; //计算新控件顶部距离
        float newLeft = Convert.ToSingle(controlTag[3]) * scale_Height; //计算新控件左侧距离
        float fontSize = Convert.ToSingle(controlTag[4]) * scale_Height; //计算新控件文字高度

        control.Width = Convert.ToInt32(newWidth); //赋值新控件宽度
        control.Height = Convert.ToInt32(newHeight); //赋值新控件高度
        control.Top = Convert.ToInt32(newTop); //赋值新控件顶部距离
        control.Left = Convert.ToInt32(newLeft); //赋值新控件左侧距离
        control.Font = new Font(control.Font.Name, fontSize, control.Font.Style, control.Font.Unit); //赋值新控件字体高度

        if (control.Controls.Count > 0) //判断是否存在子控件
        {
          SetControls(newWidth, newHeight, control); //设置子控件
        }
      }
    }
  }
}

窗体控件缩放-C#学习随笔

原文:https://www.cnblogs.com/REGO101100/p/14844613.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!