public static void GetMonitorContentScale(IntPtr monitor, out float scaleX, out float scaleY) { uint xDpi, yDpi; if (Win32Platform.IsWindows81OrGreater) { ShCore.GetDpiForMonitor(monitor, MonitorDpiType.MDT_EFFECTIVE_DPI, out xDpi, out yDpi); } else { IntPtr dc = User32.GetDC(IntPtr.Zero); xDpi = (uint)Gdi32.GetDeviceCaps(dc, DeviceCap.LogPixelsX); yDpi = (uint)Gdi32.GetDeviceCaps(dc, DeviceCap.LogPixelsY); User32.ReleaseDC(IntPtr.Zero, dc); } scaleX = xDpi / (float)Win32Platform.DEFAULT_DPI; scaleY = yDpi / (float)Win32Platform.DEFAULT_DPI; }