解決Winform程序在不同分辨率系統下界面混亂


問題分析:

         產生界面混亂的主要原因是,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)));  

}

  

 

轉載鏈接地址:http://blog.csdn.net/dongxinxi/article/details/12970447

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM