高分屏电脑开发的winforms软件如何确保在低分屏显示正常
高分屏电脑通常我们会设置缩放比例, 比如我的开发电脑为4K屏, 设置的缩放比例为150%, 即每英寸显示点数DPI为144个, 这样Windows显示效果最好; 对于低分屏, 通常的缩放比例为100%, 即每英寸显示点DPI为96个.
我们在高分屏上设计winforms软件窗体布局, 不做特意处理, 将来软件运行在低分屏电脑上, 窗体布局和文字显示很可能会错位.
这里介绍两种做法:
- 将软件做成 dpiAware, 这个做法需要考虑非常多的情况, 窗体大小/布局/控件大小/字体大小, 做的完美开发成本很高. 优点是, 系统如果部署在比开发机更高DPI的机器上, 显示效果依然很好.
- 软件不启用 dpiAware. VS的窗体设计器不不启用缩放模式, 同时软件也不启用dpiAware, 将来在低分屏上运行, 窗体/控件尺寸和字体大小都和设计时一样.
如果要采用第一种做法, 可以按照本文的参考文档进行实践, 我这里使用的就是第2种做法, 下面是要点:
Visual studio 禁用自动缩放功能
启动命令行为 devenv.exe /noscale
, 这样可保证UI 设计的样子没有缩放效果, 和将来在低分屏运行的尺寸一样. 缺点是VS中的字体有些模糊.
在这种模式下, Visual Studio 总是提示我们目前处于禁用缩放模式, 是否要开启的通知。 可以通过下面的设置关闭通知提示:
选择“工具”>“选项”,打开“选项”对话框 。在“选项”对话框中,选择“Windows 窗体设计器”>“常规”,然后将“DPI 缩放通知”设置为“False”。
VS在这种情况下, Properties Window 偶尔会空白, 可以在editor中随意切换一个tab页, Properties Window 就能正常显示内容.
项目增加 app.manifest 文件
将 dpiAware 设置为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 设置为false, 否则即使在禁用 dpiAware 情况下, 窗体的位置也会变化.
<!-- DpiAwareness 设置为效果更好的 PerMonitorV2 模式 -->
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
<appSettings>
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</appSettings>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-04-30 Hadoop生态组件的WebUI地址
2018-04-30 Kettle系列:使用Kudu API插入数据到Kudu中