如何在 C# .NET 中获取 DPI?

发布于 2024-11-26 17:16:46 字数 139 浏览 1 评论 0 原文

我正在尝试使用 C# 构建 Windows 窗体应用程序。

如何获取 .NET 中的 DPI?

我之前读过有DPIX和DPIY,可以在.NET中使用它们来获取当前的DPI。

这是正确的吗?

谢谢大家。

I'm trying to build a Windows Forms application using C#.

How do I get the DPI in .NET?

I've read before that there is DPIX and DPIY, which can be used in .NET to get the current DPI.

Is that correct?

Thanks all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

箹锭⒈辈孓 2024-12-03 17:16:46

使用 Graphics 类的实例。您可以在表单中使用以下内容来获取此信息(可以在表单的 Load 事件处理程序中):

float dx, dy;

Graphics g = this.CreateGraphics();
try
{
    dx = g.DpiX;
    dy = g.DpiY;
}
finally
{
    g.Dispose();
}

Use an instance of the Graphics class. You get this using the following within your form (could be in form's Load event handler):

float dx, dy;

Graphics g = this.CreateGraphics();
try
{
    dx = g.DpiX;
    dy = g.DpiY;
}
finally
{
    g.Dispose();
}
扛刀软妹 2024-12-03 17:16:46

在 WinForms 应用程序中获取 DPI 的现代方法

在 .NET Framework 4.7 或更高版本(例如 .NET 6.0)中,您可以使用 Control.DeviceDpi 属性,获取控件当前所在屏幕的 DPI 值显示。

int dpi = this.DeviceDpi;

Control.DeviceDpi 属性取决于应用程序的 DPI 感知模式。

在 .NET 5.0 及更高版本中,您可以使用 Application.SetHighDpiMode 方法。 此 MSDN 页面上列出了可能的模式。最佳模式是“PerMonitorV2”,它会考虑当前屏幕的 DPI 设置:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

在 .NET 4.7 和 .NET 4.8 中,您应该在清单文件中声明应用程序的 DPI 感知。我推荐“PerMonitorV2”。请查看以下文档主题以获取更多信息和示例:

设置进程的默认 DPI 感知

Modern Way to Get the DPI in a WinForms Application

In .NET Framework 4.7 or newer (for example .NET 6.0), you can use the Control.DeviceDpi property to get the DPI value for the screen on which the control is currently being displayed.

int dpi = this.DeviceDpi;

The value returned by the Control.DeviceDpi property depends on the DPI awareness mode of the application.

In .NET 5.0 and newer, you can set the DPI awareness of a WinForms application in its entry point using the Application.SetHighDpiMode method. Possible modes are listed on this MSDN page. The best mode is "PerMonitorV2", which takes into account the DPI settings of the current screen:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

In .NET 4.7 and .NET 4.8 you should declare the DPI awareness of your application in a manifest file. I recommend "PerMonitorV2". Please take a look at the following documentation topic for more information and an example:

Setting the default DPI awareness for a process

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