高分屏電腦通常我們會設(shè)置縮放比例, 比如我的開發(fā)電腦為4K屏, 設(shè)置的縮放比例為150%, 即每英寸顯示點(diǎn)數(shù)DPI為144個(gè), 這樣Windows顯示效果最好; 對于低分屏, 通常的縮放比例為100%, 即每英寸顯示點(diǎn)DPI為96個(gè).
我們在高分屏上設(shè)計(jì)winforms軟件窗體布局, 不做特意處理, 將來軟件運(yùn)行在低分屏電腦上, 窗體布局和文字顯示很可能會錯(cuò)位.
這里介紹兩種做法:
- 將軟件做成 dpiAware, 這個(gè)做法需要考慮非常多的情況, 窗體大小/布局/控件大小/字體大小, 做的完美開發(fā)成本很高. 優(yōu)點(diǎn)是, 系統(tǒng)如果部署在比開發(fā)機(jī)更高DPI的機(jī)器上, 顯示效果依然很好.
- 軟件不啟用 dpiAware. VS的窗體設(shè)計(jì)器不不啟用縮放模式, 同時(shí)軟件也不啟用dpiAware, 將來在低分屏上運(yùn)行, 窗體/控件尺寸和字體大小都和設(shè)計(jì)時(shí)一樣.
如果要采用第一種做法, 可以按照本文的參考文檔進(jìn)行實(shí)踐, 我這里使用的就是第2種做法, 下面是要點(diǎn):
Visual studio 禁用自動縮放功能
啟動命令行為 devenv.exe /noscale
, 這樣可保證UI 設(shè)計(jì)的樣子沒有縮放效果, 和將來在低分屏運(yùn)行的尺寸一樣. 缺點(diǎn)是VS中的字體有些模糊.
在這種模式下, Visual Studio 總是提示我們目前處于禁用縮放模式, 是否要開啟的通知。 可以通過下面的設(shè)置關(guān)閉通知提示:
選擇“工具”>“選項(xiàng)”,打開“選項(xiàng)”對話框 。在“選項(xiàng)”對話框中,選擇“Windows 窗體設(shè)計(jì)器”>“常規(guī)”,然后將“DPI 縮放通知”設(shè)置為“False”。
項(xiàng)目增加 app.manifest 文件
將 dpiAware 設(shè)置為false, 禁用 dpiAware文章來源:http://www.zghlxwxcb.cn/news/detail-456884.html
<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 情況下, 窗體的位置也會變化.文章來源地址http://www.zghlxwxcb.cn/news/detail-456884.html
<!-- DpiAwareness 設(shè)置為效果更好的 PerMonitorV2 模式 -->
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</appSettings>
更多 dpiAware 資料
- telerik 廠商的說明 https://www.telerik.com/blogs/winforms-scaling-at-large-dpi-settings-is-it-even-possible-
- devexpress 廠商的說明 <>https://docs.devexpress.com/WindowsForms/116666/common-features/high-dpi-support>
- SOUI 組件的說明 https://www.cnblogs.com/setoutsoft/p/16425917.html
到了這里,關(guān)于高分屏電腦開發(fā)的winforms軟件如何確保在低分屏顯示正常的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!