• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    C#实现窗体中的各个控件同比自动放缩大小

    实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录,然后根据窗体改变的大小同时放缩。

    简要步骤如下:

    1、创建C#窗体程序项目。
    2、Panel放置到窗体。
    3、设置属性dock为fill。
    4、注意MinnumSize不能设置为0, 改成大于0都行。

    复制代码 代码如下:

    public partial class FrmDemo : Form 
        { 
            double dFrmWidth; 
            double dFrmHeight; 
            double dZoomHorizon; 
            double dZoomVerticality; 
            Dictionarystring, string> dicControlsAttribute = new Dictionarystring, string>(); 
     
            protected void GetAllInitiateContrlInfo(Control CrlContainer) 
            { 
                if (CrlContainer.Parent == this) 
                { 
                    dFrmWidth = Convert.ToDouble(CrlContainer.Width); 
                    dFrmHeight = Convert.ToDouble(CrlContainer.Height); 
                } 
                foreach (Control item in CrlContainer.Controls) 
                { 
                    if (item.Name.Trim() != "") 
                        dicControlsAttribute.Add(item.Name, (item.Left + item.Width / 2) + "," + (item.Top + item.Height / 2)  
                                                 + "," + item.Width + "," + item.Height + "," + item.Font.Size); 
                    if ((item as UserControl) == null item.Controls.Count > 0) 
                        GetAllInitiateContrlInfo(item); 
                } 
            } 
     
            private void ChangeControlsInitiate(Control CrlContainer) 
            { 
                dZoomHorizon = (Convert.ToDouble(CrlContainer.Width) / dFrmWidth); 
                dZoomVerticality = (Convert.ToDouble(CrlContainer.Height) / dFrmHeight); 
            } 
             
            private void ChangeCurrentControlAttr(Control CrlContainer) 
            { 
                double[] dPosition = new double[5]; 
                foreach (Control item in CrlContainer.Controls) 
                { 
                    if (item.Name.Trim() != "") 
                    { 
                        if ((item as UserControl) == null item.Controls.Count > 0) 
                            ChangeCurrentControlAttr(item); 
                        string[] strs = dicControlsAttribute[item.Name].Split(','); 
                        for (int j = 0; j 5; j++) 
                        { 
                            dPosition[j] = Convert.ToDouble(strs[j]); 
                        } 
                        double itemWidth = dPosition[2] * dZoomHorizon; 
                        double itemHeight = dPosition[3] * dZoomVerticality; 
                        item.Left = Convert.ToInt32(dPosition[0] * dZoomHorizon - itemWidth / 2); 
                        item.Top = Convert.ToInt32(dPosition[1] * dZoomVerticality - itemHeight / 2); 
                        item.Width = Convert.ToInt32(itemWidth); 
                        item.Height = Convert.ToInt32(itemHeight); 
                        //item.Font = new Font(item.Font.Name, float.Parse 
                        //((dPosition[4] * Math.Min(dZoomHorizon, dZoomVerticality)).ToString())); 
                        //字体也可以实现同比放缩。 
                         } 
                } 
            } 
            protected override void OnSizeChanged(EventArgs e) 
            { 
                base.OnSizeChanged(e); 
                if (dicControlsAttribute.Count > 0) 
                { 
                    ChangeControlsInitiate(this.Controls[0]); 
                    ChangeCurrentControlAttr(this.Controls[0]); 
                } 
            }  
     
            public FrmDemo() 
            { 
                InitializeComponent(); 
                GetAllInitiateContrlInfo(this.Controls[0]);//构造函数里面调用即可。 
            } 
    }

    5、效果测试

    您可能感兴趣的文章:
    • C#中登录窗体和欢迎窗体关闭方法分析
    • C#设置窗体最大化且不遮挡任务栏的方法
    • C#窗体传值实例汇总
    • C#全局热键设置与窗体热键设置实例
    • C#定时关闭窗体实例
    • C#实现随鼠标移动窗体实例
    • C# Winform实现捕获窗体最小化、最大化、关闭按钮事件的方法
    • C#入门之窗体的简单用法实例
    上一篇:十个提高MongoDB安全性的配置技巧
    下一篇:Mongodb启动命令参数中文说明
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    C#实现窗体中的各个控件同比自动放缩大小 实现,窗体,中的,各个,控件,