C# 是否有方法检索设备';不使用GDI的s DPI+/WinForms“;“图形”;上课?
是否可以使用本机win api调用从c#获取我的设备DPI 我知道如何从windows窗体应用程序获取dpi,目前的代码是: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
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。