1. 程式人生 > >解決VS在高DPI下設計出的Winform程式介面變形問題

解決VS在高DPI下設計出的Winform程式介面變形問題

在目前高分屏流行的情況下,windows縮放與佈局仍然設定為100%就顯得太小(特別是筆記本),通常會調整為125%或150%,

VS在縮放與佈局設定為非100%的時候,就會自動啟動DPI感知模式,以防止VS介面模糊。

但也會導致一個問題

就是在高DPI下(非100%縮放與佈局)設計的winform程式

當拿到不同的縮放條件下執行時就會遇到介面變形或不一致的問題,

我們這裡提供了一個解決方案來防止高DPI下設計出的winform程式介面變形(但是不能解決winform程式在高DPI下可能變糊)

即禁用VS的高DPI感知模式,讓VS執行在標準DPI環境下,這樣設計出來的程式無論在何種DPI環境下都不會產生變形(但可能模糊,我們這裡主要解決變形問題)

原因:

With the extreme differences in display DPIs, especially in modern 2-in-1 devices, this can still happen with the most current versions of the .NET Framework and Visual Studio. To address this in a team using different DPI displays, make sure Visual Studio always starts in a non-DPI-aware mode, so the Windows Forms designer always bases the layout calculation on 96 DPI. To this end, simply set the following registry key to disable Visual Studio's HighDPI awareness

由於顯示DPI的極端差異,尤其是在現代2合1裝置中,這種情況在最新版本的.NET Framework和Visual Studio中仍可能發生。 要在使用不同DPI顯示的團隊中解決此問題,請確保Visual Studio始終以非DPI感知模式啟動,因此Windows窗體設計器始終將佈局計算的基礎設定為96 DPI。 為此,只需設定以下注冊表項即可禁用Visual Studio的HighDPI意識:

解決方法:

1、手動在登錄檔中新增項

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe]

"dpiAwareness"=dword:00000000

2、Bat一鍵處理(新建文字檔案.txt 改字尾為 bat,將下面程式碼貼上到文字檔案裡儲存,雙擊執行即可)

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe" /v "dpiAwareness" /t REG_DWORD /d "0"