Mise à l’échelle de Windows

Windows 8/10 a commencé à inclure un curseur indiquant la quantité d’éléments graphiques à mettre à l’échelle, cliquez avec le bouton droit sur le bureau -> affichage. Pour un collègue avec un écran 4k pour ordinateur portable, il est de 250% tandis qu’un autre collègue utilise la même résolution sur un écran de 4 k 28 “. C’est 150%.

Comment lire cette valeur par programmation? J’ai besoin d’ajuster certains graphiques pour qu’il soit identique sur tous les écrans.

Je travaille en Java sur une application Eclipse RCP, mais un moyen qui utilise C ou C ++ via JNI fonctionne également. J’ai regardé autour de moi mais je ne trouve rien.

Peut-être que cette réponse d’ ici pourrait vous aider:

[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% }