Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法检索设备';不使用GDI的s DPI+/WinForms“;“图形”;上课?_C#_.net_Windows_Winapi_Graphics - Fatal编程技术网

C# 是否有方法检索设备';不使用GDI的s DPI+/WinForms“;“图形”;上课?

C# 是否有方法检索设备';不使用GDI的s DPI+/WinForms“;“图形”;上课?,c#,.net,windows,winapi,graphics,C#,.net,Windows,Winapi,Graphics,是否可以使用本机win api调用从c#获取我的设备DPI 我知道如何从windows窗体应用程序获取dpi,目前的代码是: Graphics g = Graphics.FromImage(new Bitmap(10, 10)); var scaleX = g.DpiX / 96.0f; var scaleY = g.DpiY / 96.0f; 我想知道win api调用是否可以让事情变得更简单。如何 像素每英寸 Data type: uint32 Access type: Re

是否可以使用本机win api调用从c#获取我的设备DPI

我知道如何从windows窗体应用程序获取dpi,目前的代码是:

  Graphics g = Graphics.FromImage(new Bitmap(10, 10));

  var scaleX = g.DpiX / 96.0f;
  var scaleY = g.DpiY / 96.0f;
我想知道win api调用是否可以让事情变得更简单。

如何

像素每英寸

Data type: uint32
Access type: Read-only
Qualifiers: Units (Pixels per Logical Inch) 
Data type: uint32
Access type: Read-only
Qualifiers: Units (Pixels per Logical Inch) 
沿监视器x轴(水平方向)的分辨率

像素每英寸

Data type: uint32
Access type: Read-only
Qualifiers: Units (Pixels per Logical Inch) 
Data type: uint32
Access type: Read-only
Qualifiers: Units (Pixels per Logical Inch) 
沿监视器y轴(垂直方向)的分辨率

您可以使用类似的方法:

也有,但我读到有,所以你的里程可能不同


还有(),它看起来需要执行一些COM互操作调用,可能干净,也可能不干净,只适用于Direct2D可用的Windows版本。有些是在Direct2D和.NET上。有一个叫做getDesktopApi的api,但我从未使用过。我认为这和执行任何互操作调用一样简单。

该代码不会执行任何与Control.CreateGraphics()不同的操作。winapi调用从来不会让任何事情变得更简单。“我的设备”并不能准确描述您所说的设备类型。@HansPassant“我的设备”指的是应用程序正在运行的设备。在IMO中调用
Grahics
对象似乎不那么麻烦。不过,这是一个很好的解决方案。您确定PixelsPerXLogicalInch吗?在windows 10 PixelsPerXLogicalInch上,每个DPI集始终返回96。