校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > C#實現窗體中的各個控件同比自動放縮大小

C#實現窗體中的各個控件同比自動放縮大小

熱門標簽:智能電銷機器人銷售話術 兗州電話外呼營銷系統 機器人外呼系統軟件存在問題 南京400電話怎樣辦理 企業智能外呼系統價格多少 徐州ai電銷機器人原理 沈陽營銷電銷機器人招商 福州電銷機器人源代碼 高德地圖標注商戶位置

實現方式主要是利用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#入門之窗體的簡單用法實例

標簽:大理 昭通 景德鎮 鶴崗 吉安 丹東 本溪 邯鄲

巨人網絡通訊聲明:本文標題《C#實現窗體中的各個控件同比自動放縮大小》,本文關鍵詞  實現,窗體,中的,各個,控件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《C#實現窗體中的各個控件同比自動放縮大小》相關的同類信息!
  • 本頁收集關于C#實現窗體中的各個控件同比自動放縮大小的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 饶阳县| 连南| 交口县| 西充县| 高邮市| 紫阳县| 贵南县| 财经| 临汾市| 庄河市| 达尔| 化州市| 镶黄旗| 营口市| 广安市| 高邑县| 郓城县| 崇文区| 自贡市| 巴彦县| 梅河口市| 百色市| 封开县| 贵港市| 大足县| 林甸县| 青冈县| 习水县| 化州市| 沙雅县| 德州市| 山阴县| 周口市| 临夏县| 乐山市| 小金县| 巩留县| 尼勒克县| 车险| 昌乐县| 通辽市|