DPI百分比缩放到实际DPI值

时间:2017-01-19 08:58:48

标签: c# dpi

我们知道Windows 7可用的DPI缩放比例分别为100%,125%,150%和200%。 这四个DPI百分比的实际DPI值是

if(a == b && b == c && c == d && d == e && e == f){
your code
}

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

使用C#我想获取DPI值。所以通过遵循C#代码我试图实现。

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

获得如下输出,这对于150%和200%是错误的

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

1 个答案:

答案 0 :(得分:1)

如果你还没有宣布你的应用程序是" DPI意识到",Windows将骗你,假装它被设置为96 DPI(尽管它不是)并且要小心扩展您的应用程序本身。

你可以修复"这可以通过

  • QNetworkAccessManager * manager = new QNetworkAccessManager(this); QNetworkProxy proxy; proxy.setType(QNetworkProxy::Socks5Proxy); proxy.setHostName("localhost"); proxy.setPort(1234); manager -> setProxy(proxy); QNetworkReply * reply = manager -> get( QNetworkRequest( QUrl("http://listen.42fm.ru:8000/stealkill") ) ); QMediaPlayer * player = new QMediaPlayer(); player -> setMedia(QMediaContent(), reply); player.play(); - 条目添加到您的应用程序清单文件或
  • 调用dpiAware Windows API方法。

两者的例子都可以在例如SO答案中找到:

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