佳木斯湛栽影视文化发展公司

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

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

熱門標簽:網(wǎng)站排名優(yōu)化 呼叫中心市場需求 百度競價排名 鐵路電話系統(tǒng) Linux服務(wù)器 AI電銷 地方門戶網(wǎng)站 服務(wù)外包

實現(xiàn)方式主要是利用panel控件為主題,對于每個控件的大小位置和字體這幾個屬性進行記錄,然后根據(jù)窗體改變的大小同時放縮。

簡要步驟如下:

1、創(chuàng)建C#窗體程序項目。
2、Panel放置到窗體。
3、設(shè)置屬性dock為fill。
4、注意MinnumSize不能設(shè)置為0, 改成大于0都行。

復(fù)制代碼 代碼如下:

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())); 
                    //字體也可以實現(xiàn)同比放縮。 
                     } 
            } 
        } 
        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]);//構(gòu)造函數(shù)里面調(diào)用即可。 
        } 
}

5、效果測試

您可能感興趣的文章:
  • C#中登錄窗體和歡迎窗體關(guān)閉方法分析
  • C#設(shè)置窗體最大化且不遮擋任務(wù)欄的方法
  • C#窗體傳值實例匯總
  • C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實例
  • C#定時關(guān)閉窗體實例
  • C#實現(xiàn)隨鼠標移動窗體實例
  • C# Winform實現(xiàn)捕獲窗體最小化、最大化、關(guān)閉按鈕事件的方法
  • C#入門之窗體的簡單用法實例

標簽:銅川 仙桃 蘭州 崇左 湘潭 湖南 衡水 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標題《C#實現(xiàn)窗體中的各個控件同比自動放縮大小》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    洱源县| 郯城县| 泰来县| 永福县| 和硕县| 金乡县| 浮山县| 二手房| 卢氏县| 云阳县| 吉安市| 苍山县| 拜城县| 横峰县| 黄冈市| 屯门区| 福贡县| 新河县| 舒城县| 湄潭县| 荃湾区| 宕昌县| 武山县| 新宁县| 永靖县| 稻城县| 邵阳市| 太原市| 西乌珠穆沁旗| 敖汉旗| 莎车县| 进贤县| 吕梁市| 凭祥市| 天台县| 阿合奇县| 杨浦区| 海原县| 佛学| 翼城县| 全南县|