1. 程式人生 > 實用技巧 >WinForm解析度適應-高DPI自動縮放

WinForm解析度適應-高DPI自動縮放

問題背景

最近在寫一個 WinForm 程式,在不同系統終端測試的時候發現原本在 Windows 7 系統上能夠高清顯示的程式,在搭配了更高解析度螢幕的 Windows 10 系統終端上出現了介面模糊的現象,查閱資料並多次嘗試後終於解決了這個問題,記錄在此。

問題原因

WinForm 對高解析度螢幕的適配並不是很好,當解析度較高時,Windows 系統會將程式裡面的字型進行縮放,在 Windows 10 系統尤其嚴重,這將導致程式的介面大小變化,字型也會變得模糊。

解決方法

知道了導致程式模糊的原因,找到相應的解決方法就很簡單了,我們只需要讓程式感知 DPI ,當 DPI 較高時禁止 Windows 對其進行自動縮放。

注意事項:該方法適用於 .NET Framework 版本大於等於4.5的程式。

具體步驟如下:

  1. 右鍵專案,新增應用程式清單檔案

  2. 應用程式清單檔案中的部分程式碼取消註釋。

  3. 在程式配置檔案(app.config)的appSettings節點下新增如下程式碼

    <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
    

  4. 重新編譯生成專案,開啟程式檢視效果。