c# - WinForm 的 Windows 高 DPI 缩放
问题描述
这是我遇到很多麻烦的事情。经过几天的试验,我终于弄清楚了如何正确扩展 WinForms。这也可能对其他人有所帮助。
有很多关于修改 app.manifest 或 app.config 文件的建议。该解决方案可能适用于早期版本的 Windows,但没有一个对我有用。安装我的应用程序后,图片和控件搞砸了(在 Visual Studio 中调试一切正常)。经过一些测试,我发现将“覆盖高 dpi 缩放”选项设置更改为“应用程序”对我有用。但我想在应用程序中支持这一权利,而不是修改某些 Windows 设置。
我偶然发现了一份 Windows 支持文档,解释说他们已经使用最新版本的 Windows 更改了一些 DPI 缩放,并且旧方法可能无法正常工作。
解决方案
您实际上需要做的就是执行以下步骤:
- 找到您的 app.config
- 在
</startup>
and之间<userSettings>
,插入以下代码段
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>
- 保存文件并重新加载您的项目
- 确保您已从清单中删除任何其他调整
- 在您的主要方法或入口点中设置它
Application.EnableVisualStyles()
而已!在机器上安装后,您的应用程序在 4K 环境中应该看起来很棒。如需进一步参考,请参阅Microsoft 的这篇文章。
推荐阅读
- python - 如何使用 webapp2 传递我的 Google Analytics API 响应
- css - 如何访问样式标签内的 EL?
- ios - UITableView 和 UICollectionView 上的 Swift didSelectRowAt 不起作用
- python - Django REST 序列化程序错误
- javascript - 使用 redux 流下载文件
- web-services - 如何解析在 GraphQL 中实现接口的模式类型的数据?
- c# - 如何解决在 ApiController 初始化中必须使用 await 方法的问题
- sql - SQL Server - 根据列显示行的排名
- node.js - 无法使用 npm 安装 osmosis 包
- c# - c# DateTime.Equals() 无法正常工作