Windows XP 中的 DPI Aware 应用程序
我想让我的 C# 应用程序了解 DPI。 Windows API 中有一个名为 SetProcessDPIAware() 的命令,但问题是它仅适用于 Windows Vista 和更高版本的 Windows,而不适用于 XP。如何使控件、按钮和字体 DPI 感知,以便无论使用什么 Windows 版本都可以正确显示?
I want to make my C# application DPI aware. There is a command available in Windows API called SetProcessDPIAware() but the problem is it only works in Windows Vista and higher versions of Windows and not in XP. How can I make the controls, Buttons and Fonts DPI aware such that it displays correctly regardless what ever Windows version is used?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
调用
SetProcessDPIAware
不仅可以神奇地让您感知所有 DPI,还可以让您感知 DPI。其目的是向 Windows 声明您的应用程序已正确编写为可识别 DPI。此外,不建议使用它;您应该在清单中声明 DPI 意识。 MSDN 上有一篇关于此问题的完整文章 。Calling
SetProcessDPIAware
doesn't just magically make everything DPI aware for you; its purpose is to declare to Windows that your app has been correctly written to be DPI aware. Furthermore, its use is not recommended; you're supposed to declare DPI awareness in your manifest instead. There's an entire article about this on MSDN.请参阅我关于如何使应用程序响应 DPI 设置的相当详细的答案 这个 StackOverflow 问题。
简而言之,您可以将所有表单的
AutoScaleMode
更改为ScaleMode.Dpi
。但最好将其保留在 ScaleMode.Font 中;字体随着 DPI 的增加而变大。
See my moderately detailed answer on how to make an application respond to DPI settings on this StackOverflow question.
The short version is that you can change all your form's
AutoScaleMode
toScaleMode.Dpi
.But it's better to leave it at
ScaleMode.Font
; fonts get bigger as the DPI increases.