解決Winform程式在不同解析度系統下介面混亂

來源:互聯網
上載者:User

標籤: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程式在不同解析度系統下介面混亂

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.