获得屏幕规模

我们可以获得分辨率,屏幕上的内容是Screen类。 所以,我们应该使用Screen.WorkingArea.WidthScreen.WorkingArea.Height ,如果我们想在屏幕中心放置一些东西。

但是,在Windows 8.1(不确定其他操作系统)中,如果它们看起来太小,就有可能在屏幕上缩放项目。 您可以通过调用桌面上的上下文菜单,选择“屏幕分辨率”,然后选择“使文本和其他项目更大或更小”来检查它。

问题是,它似乎确实提高了屏幕分辨率! 因此, Screen.WorkingArea.WidthScreen.WorkingArea.Height将为您提供缩放值,并指向Screen.WorkingArea.Width/2 Screen.WorkingArea.Height/2将不再位于实际屏幕的中心(200%缩放此点将在屏幕的右下角)。 这可能会阻碍UI项目的大量放置。

那么,是否有可能获得缩放的价值? 我找不到任何包含此信息的类。

检索DPI的大多数方法取决于现有控件,有时可能不方便。 但是DPI总是可以从注册表中检索出来。 在C#中:

 using Microsoft.Win32; //... var currentDPI = (int)Registry.GetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "LogPixels", 96); 

规模将是

 var scale = 96/(float)currentDPI;