高分屏電腦開發(fā)的winforms軟件如何確保在低分屏顯示正常
高分屏電腦通常我們會設(shè)置縮放比例, 比如我的開發(fā)電腦為4K屏, 設(shè)置的縮放比例為150%, 即每英寸顯示點數(shù)DPI為144個, 這樣Windows顯示效果最好; 對于低分屏, 通常的縮放比例為100%, 即每英寸顯示點DPI為96個.
我們在高分屏上設(shè)計winforms軟件窗體布局, 不做特意處理, 將來軟件運行在低分屏電腦上, 窗體布局和文字顯示很可能會錯位.
這里介紹兩種做法:
- 將軟件做成 dpiAware, 這個做法需要考慮非常多的情況, 窗體大小/布局/控件大小/字體大小, 做的完美開發(fā)成本很高. 優(yōu)點是, 系統(tǒng)如果部署在比開發(fā)機(jī)更高DPI的機(jī)器上, 顯示效果依然很好.
- 軟件不啟用 dpiAware. VS的窗體設(shè)計器不不啟用縮放模式, 同時軟件也不啟用dpiAware, 將來在低分屏上運行, 窗體/控件尺寸和字體大小都和設(shè)計時一樣.
如果要采用第一種做法, 可以按照本文的參考文檔進(jìn)行實踐, 我這里使用的就是第2種做法, 下面是要點:
Visual studio 禁用自動縮放功能
啟動命令行為 devenv.exe /noscale , 這樣可保證UI 設(shè)計的樣子沒有縮放效果, 和將來在低分屏運行的尺寸一樣. 缺點是VS中的字體有些模糊.
在這種模式下, Visual Studio 總是提示我們目前處于禁用縮放模式, 是否要開啟的通知。 可以通過下面的設(shè)置關(guān)閉通知提示:
選擇“工具”>“選項”,打開“選項”對話框 。在“選項”對話框中,選擇“Windows 窗體設(shè)計器”>“常規(guī)”,然后將“DPI 縮放通知”設(shè)置為“False”。
VS在這種情況下, Properties Window 偶爾會空白, 可以在editor中隨意切換一個tab頁, Properties Window 就能正常顯示內(nèi)容.
項目增加 app.manifest 文件
將 dpiAware 設(shè)置為false, 禁用 dpiAware
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
編輯 app.cnfig 文件
將 EnableWindowsFormsHighDpiAutoResizing 設(shè)置為false, 否則即使在禁用 dpiAware 情況下, 窗體的位置也會變化.
<!-- DpiAwareness 設(shè)置為效果更好的 PerMonitorV2 模式 -->
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</appSettings>

浙公網(wǎng)安備 33010602011771號