我正在尝试使用 C# 构建 Windows 窗体应用程序。
如何获取 .NET 中的 DPI?
我之前读过有DPIX和DPIY,可以在.NET中使用它们来获取当前的DPI。
正确吗?
谢谢大家。
使用
Graphics
类的实例。您可以在表单中使用以下内容来获取此信息(可以在表单的 Load
事件处理程序中):
float dx, dy;
Graphics g = this.CreateGraphics();
try
{
dx = g.DpiX;
dy = g.DpiY;
}
finally
{
g.Dispose();
}
在 .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);