Winform程序在Win10下面界面佈局混亂的情況

問題分析:

         產生界面混亂的主要原因是,winform程序的座標是基於點(Point)的,而Point又與DPI相關,具體就是

         一英寸 =72Points

一英寸 =  96pixels96DPI是windows的默認DPI,當它被用戶更改後,可能就會導致界面與設計之初產生了錯亂。

       在網上搜索相關資料後,試着將this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi 但是經實測後,發現仍然沒有解決問題:有些界面甚至顯示不全;有些控件甚至會被“截斷”或完全不顯示。

       原因是:默認情況下winfrom的Font單位是Point,最終顯示在界面上的尺寸將根據DPI設置自動變化,可以表示爲公式: Point / 72 * DPI = Pixel 按照MSDN的解釋,上述設置比較適合關心程序的可視區域及控件文字在不同的DPI下總是顯示設計時的大小,而不用關心程序界面的絕對大小的情況。

解決辦法:

        後來想到web程序中的常用單位是像素(pixel),在不同的機器上也能很好地呈現網頁佈局。那麼如果能在winform程序中也使用像素來定位,問題不就解決了嗎?

        的確,在winform中實現該計量單位非常簡單,僅需要在Form的的構造函數中作如下設置即可:

private void InitializeComponent()  
{              
            //設定按字體來縮放控件  
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;  
            //設定字體大小爲12px       
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));  
}  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章