在 C# 中访问 Windows 显示设置
Windows 7 及更高版本提供控制面板设置,允许用户调整文本和 UI 元素大小。 C# 开发人员经常需要检索此设置以实现动态应用程序行为。
实用的解决方案
直接使用 graphics.DpiX
和 DeviceCap.LOGPIXELSX
会意外返回固定值 (96 DPI),无论实际缩放如何。 为了准确确定缩放因子,需要采用不同的方法:
<code class="language-csharp">[DllImport("gdi32.dll")] static extern int GetDeviceCaps(IntPtr hdc, int nIndex); public enum DeviceCap { VERTRES = 10, DESKTOPVERTRES = 117 } private float GetScalingFactor() { using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { IntPtr desktop = g.GetHdc(); int logicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES); int physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES); g.ReleaseHdc(desktop); return (float)physicalScreenHeight / logicalScreenHeight; // e.g., 1.25 for 125% scaling } }</code>
此代码片段利用 GetDeviceCaps
来比较逻辑和物理屏幕高度,提供精确的缩放系数。 例如,结果 1.25 表示缩放级别为 125%。
以上是如何在 C# 中以编程方式检索 Windows 显示缩放因子?的详细内容。更多信息请关注PHP中文网其他相关文章!