gpt4 book ai didi

c# - DPI 百分比缩放到实际 DPI 值

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:50 26 4
gpt4 key购买 nike

众所周知,Windows 7 可用的 DPI 缩放比例为 100%、125%、150% 和 200%。这四个DPI百分比的实际DPI值是

Percentage - DPI Values
100% - 96
125% - 120
150% - 144
200% - 192

请引用 DPI 缩放的链接: http://www.techrepublic.com/blog/windows-and-office/get-a-better-view-in-windows-7-by-adjusting-dpi-scaling/

我想使用 C# 获取 DPI 值。因此,我试图通过遵循 C# 代码来实现。

float x=0;
float y=0;
Graphics gp = Graphics.FromHwnd(IntPtr.Zero);// we can also use this.CreateGraphics()
x = gp.DpiX;
y = gp.DpiY;

我得到的输出如下,150% 和 200% 是错误的

100%  -  96 //both x,y values
125% - 120 //both x,y values
**150% - 96 //both x,y values
200% - 96 //both x,y values**

最佳答案

如果您没有将您的应用程序声明为“DPI 感知”,Windows 会欺骗您,假装它设置为 96 DPI(尽管它不是)并负责缩放您的应用程序本身。

您可以通过任一方式“修复”此问题

  • dpiAware 条目添加到您的应用程序 list 文件或
  • 调用 SetProcessDPIAware Windows API 方法。

例如,在这个 SO 答案中可以找到两者的示例:

为了让事情变得更加复杂,Windows 8.1 引入了每个显示器的 DPI 设置,弃用了 SetProcessDPIAware。这其实是一件好事,但是it's hard to get it right .

关于c# - DPI 百分比缩放到实际 DPI 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com