如何解决更改 DPI 时,WinForms 无法正确缩放大小即使对于简单控件
当 DPI 设置更改时,我无法让 WinForms 正确缩放 UI:不同控件的缩放比例不同,从而弄乱了 UI 设计。
这是我尝试过的:
- 在 Windows 7 中,将文本大小设置为 100% (= 96 dpi)。
- 启动 Visual Studio 16.9.1 并使用 C# 和 .NET 5.0 创建一个新的 WinForms 应用
- 在表单中添加一个简单的文本框和一个按钮
- 编译项目
- 运行程序:两个控件的高度均为 23 像素(通过视觉和编程方式检查)
- 将操作系统文本大小设置为 150% (= 144 dpi),然后注销并重新登录以应用更改
- 再次运行程序:现在文本框的高度为 31 像素,按钮的高度为 38 像素。
因此,当将操作系统文本大小 (= DPI) 增加 50% 时:
注意事项:
- 我检查了此处描述的所有准则:How to write WinForms code that auto-scales to system font and dpi settings?。该应用程序支持 DPI,并且 AutoScaleMore 和 AutoScaleDimensions 设置正确(.NET 5.0 中的默认值)。
- 我也在 .NET 4.7.2 和 Windowds 10 上尝试过这个,但两个控件的缩放比例总是不同。
为什么这些控件的缩放比例不同? 为什么它们没有像您预期的那样按 50% 缩放? 我该怎么做才能让这两个控件按相同的系数缩放?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。