標籤:graphics 關心 number from dpi border har 座標 one
問題分析:
產生介面混亂的主要原因是,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的的建構函式中作如下設定即可:
| 123456789101112 |
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))); } |
解決Winform程式在不同解析度系統下介面混亂