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