問題背景
最近在寫一個 WinForm 程序,在不同系統終端測試的時候發現原本在 Windows 7 系統上能夠高清顯示的程序,在搭配了更高分辨率屏幕的 Windows 10 系統終端上出現了界面模糊的現象,查閱資料並多次嘗試后終於解決了這個問題,記錄在此。
問題原因
WinForm 對高分辨率屏幕的適配並不是很好,當分辨率較高時,Windows 系統會將程序里面的字體進行縮放,在 Windows 10 系統尤其嚴重,這將導致程序的界面大小變化,字體也會變得模糊。
解決方法
知道了導致程序模糊的原因,找到相應的解決方法就很簡單了,我們只需要讓程序感知 DPI ,當 DPI 較高時禁止 Windows 對其進行自動縮放。
注意事項:該方法適用於 .NET Framework 版本大於等於4.5的程序。
具體步驟如下:
-
右鍵項目,添加
應用程序清單文件
。
-
將
應用程序清單文件
中的部分代碼取消注釋。
-
在程序配置文件(app.config)的
appSettings
節點下添加如下代碼<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
-
重新編譯生成項目,打開程序查看效果。