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)