Windows XP 中的 DPI Aware 应用程序

发布于 2024-10-16 08:59:40 字数 166 浏览 1 评论 0原文

我想让我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

山人契 2024-10-23 08:59:40

调用 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.

素罗衫 2024-10-23 08:59:40

请参阅我关于如何使应用程序响应 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 to ScaleMode.Dpi.

But it's better to leave it at ScaleMode.Font; fonts get bigger as the DPI increases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文