『QQ:1353814576』

C# Graphics 获取桌面显示DPI 以及屏幕缩放比例方法


Graphics 实现获取Windows 桌面DPI 桌面缩放比例的代码

///获取当前系统的dpi数值
private void SystemDpi(out int x, out int y)
{
            using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
            {
                x = (int)g.DpiX;
                y = (int)g.DpiY;
                g.Dispose();
            }
}

///根据当前系统dpi数值匹配 当前系统的桌面缩放比例
private double Scaling(int DpiIndex)//x或y都一样
{
            switch (DpiIndex)
            {
                case 96: return 1;
                case 120: return 1.25;
                case 144: return 1.5;
                case 168: return 1.75;
                case 192: return 2;
            }
            return 1;
}

调用例子

//x_dpi:横向dpi  y_dpi:纵向dpi 
int x_dpi = 0, y_dpi = 0;
//获取屏幕dpi  x_dpi或y_dpi取其一即可 (两者正常情况下 应该是一致的 不一致的话 屏幕显示应该变形了)
SystemDpi(out x_dpi,out y_dpi);
//再通过dpi数值 获取屏幕当前的缩放比例
double ScreenScale = Scaling(x_dpi);//或者  double ScreenScale = Scaling(y_dpi)