Maison >développement back-end >C++ >Comment puis-je récupérer avec précision le facteur de mise à l'échelle de l'affichage Windows en C# ?

Comment puis-je récupérer avec précision le facteur de mise à l'échelle de l'affichage Windows en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-15 11:10:50369parcourir

How Can I Accurately Retrieve Windows Display Scaling Factor in C#?

Récupération précise de la mise à l'échelle de l'affichage Windows dans les applications C#

Adapter le comportement de l'application pour qu'il corresponde aux paramètres d'affichage définis par l'utilisateur, tels que la taille du texte et des éléments, est une tâche de programmation fréquente. Cet article présente une méthode C# robuste pour récupérer avec précision ces paramètres.

Bien que Graphics.DpiX ou DeviceCap.LOGPIXELSX soient des approches traditionnelles, elles peuvent produire des valeurs de mise à l'échelle inexactes, en particulier sur les écrans à haute résolution.

Une méthode plus fiable consiste à exploiter la fonction API Windows GetDeviceCaps pour calculer le facteur de mise à l'échelle. Cette fonction récupère les hauteurs d'écran logiques et physiques, permettant un calcul précis.

Voici le code C# amélioré :

<code class="language-csharp">[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

public enum DeviceCap
{
    VERTRES = 10,
    DESKTOPVERTRES = 117,
}

private float GetScalingFactor()
{
    using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
    {
        IntPtr desktop = g.GetHdc();
        int logicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.VERTRES);
        int physicalScreenHeight = GetDeviceCaps(desktop, (int)DeviceCap.DESKTOPVERTRES);
        g.ReleaseHdc(desktop);
        return (float)physicalScreenHeight / logicalScreenHeight; // e.g., 1.25 = 125%
    }
}</code>

Cette approche raffinée offre une précision supérieure dans la détermination du facteur de mise à l'échelle sur différents niveaux de mise à l'échelle de l'affichage, permettant des ajustements plus précis des fonctionnalités de l'application en fonction de la configuration de l'affichage de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn