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

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

with 不同 導致 粘貼 work 新版本 The spec follow

在目前高分屏流行的情況下,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"

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