winforms 如何在C# .NET中获得DPI?

7xllpg7q  于 2023-10-23  发布在  C#
关注(0)|答案(2)|浏览(240)

我正在尝试使用C#构建Windows窗体应用程序。
如何在.NET中获得DPI?
我以前读过有DPIX和DPIY,它们可以在.NET中使用来获取当前的DPI。
是这样吗?
谢谢大家。

55ooxyrt

55ooxyrt1#

使用Graphics类的示例。您可以在表单中使用以下命令(可以在表单的Load事件处理程序中):

float dx, dy;

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

6psbrbz92#

在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感知。可能的模式列在this MSDN page上。最好的模式是“PerminorV2”,它考虑到当前屏幕的DPI设置:

Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

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

相关问题