我们可以获得解析,屏幕上的内容为Screen
类。因此,如果我们想在屏幕中心放置一些内容,我们应该使用Screen.WorkingArea.Width
和Screen.WorkingArea.Height
。
但是,在Windows 8.1中(不确定其他操作系统),如果它们看起来太小,就有可能在屏幕上缩放项目。您可以通过调用桌面上的上下文菜单进行检查,选择"屏幕分辨率",然后选择"使文本和其他项目更大或更小"。
问题是,它似乎确实提高了屏幕分辨率!因此,Screen.WorkingArea.Width
和Screen.WorkingArea.Height
会为您提供缩放值,点Screen.WorkingArea.Width/2
Screen.WorkingArea.Height/2
将不再位于实际屏幕的中心(对于200%缩放,此点将会降低屏幕的右上角)。这可能会妨碍UI项目的大量放置。
那么,是否有可能获得缩放的价值?我无法找到包含此信息的任何课程。
答案 0 :(得分:2)
检索DPI的大多数方法取决于现有控件,有时可能不方便。但是DPI总是可以从注册表中检索出来。在C#中:
using Microsoft.Win32;
//...
var currentDPI = (int)Registry.GetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "LogPixels", 96);
比例将是
var scale = 96/(float)currentDPI;
答案 1 :(得分:0)
var currentDPI = (int)Microsoft.Win32.Registry.GetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop\\WindowMetrics", "AppliedDPI", 0);
SetClientSizeCore((int)((float)Width * (float)currentDPI/96.0f), (int)((float)Height * (float)currentDPI/96.0f));
答案 2 :(得分:0)
这是在Windows 10上获取DPI信息的有效方法:
int DPI = Int32.Parse((string)Registry.GetValue(
@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager",
"LastLoadedDPI", "96"));