c# - 如何获取 Windows 显示设置?

标签 c# windows dpi

Windows 7 中有显示设置(控制面板 -> 显示)。它允许更改屏幕上文本和其他项目的大小。 我需要获得此设置才能根据设置值打开/关闭我的 C# 应用程序中的某些功能。 这可能吗?

最佳答案

graphics.DpiX 和 DeviceCap.LOGPIXELSX 在 Surface Pro 上的所有缩放级别都返回 96。

相反,我设法以这种方式计算比例因子:

[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
public enum DeviceCap
{
    VERTRES = 10,
    DESKTOPVERTRES = 117,

    // http://pinvoke.net/default.aspx/gdi32/GetDeviceCaps.html
}  


private float getScalingFactor()
{
    Graphics g = Graphics.FromHwnd(IntPtr.Zero);
    IntPtr desktop = g.GetHdc();
    int LogicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
    int PhysicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES); 

    float ScreenScalingFactor = (float)PhysicalScreenHeight / (float)LogicalScreenHeight;

    return ScreenScalingFactor; // 1.25 = 125%
}

关于c# - 如何获取 Windows 显示设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977445/

相关文章:

html - Retina 显示器和 1080p 手机等高 DPI 设备如何处理媒体查询中的像素?

c# - 调用 .Entry() 时会触发 DbContext 的 ChangeTracker.StateChanged

c++ - 多线程应用程序在内存使用率高时崩溃并出现错误 R6016 或 0xC0000005

c - 微软怎么能说 WinAPI 中一个字的大小是 16 位呢?

python os.walk 显示混合的 windows 和 unix 路径

python - 计算屏幕DPI

c# - 如何在 .Net WinForms 控件上绘制自定义边框

c# - EntityCollection 已经初始化

c# - ListViewItem 的组未通过另一个集合保留

html - 有人可以解释一下 css 中称为 dots-per-CSS-inch 而不是 dots-per-physical-inch 的错误吗