Exemple #1
0
        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;
        }