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

问题描述 投票:0回答:2

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

如何获取 .NET 中的 DPI?

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

正确吗?

谢谢大家。

c# .net winforms dpi
2个回答
34
投票

使用

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

float dx, dy;

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

7
投票

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

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

int dpi = this.DeviceDpi;

Control.DeviceDpi属性返回的值取决于应用程序的DPI感知模式。在 .NET 5.0 及更高版本中,您可以使用 Application.SetHighDpiMode 方法在 WinForms 应用程序的入口点设置 DPI 感知。 此 MSDN 页面上列出了可能的模式。最佳模式是“PerMonitorV2”,它考虑了当前屏幕的 DPI 设置:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);
    
© www.soinside.com 2019 - 2024. All rights reserved.