首页 >后端开发 >C++ >如何在 C# 中准确检索 Windows 显示缩放因子?

如何在 C# 中准确检索 Windows 显示缩放因子?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-15 11:10:50365浏览

How Can I Accurately Retrieve Windows Display Scaling Factor in C#?

在 C# 应用程序中精确检索 Windows 显示缩放

调整应用程序行为以匹配用户定义的显示设置(例如文本和元素大小调整)是一项常见的编程任务。 本文介绍了一种用于准确检索这些设置的强大 C# 方法。

虽然 Graphics.DpiXDeviceCap.LOGPIXELSX 是传统方法,但它们可能会产生不准确的缩放值,特别是在高 DPI 显示器上。

更可靠的方法是利用 Windows API 函数 GetDeviceCaps 来计算缩放因子。此函数检索逻辑和物理屏幕高度,以便进行精确计算。

这是改进的 C# 代码:

<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 = 125%
    }
}</code>

这种改进的方法在确定各种显示缩放级别的缩放因子方面提供了卓越的准确性,从而可以根据用户的显示配置对应用程序功能进行更精确的调整。

以上是如何在 C# 中准确检索 Windows 显示缩放因子?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn