Maison > développement back-end > C++ > Comment récupérer par programme le facteur de mise à l'échelle de l'affichage Windows en C# ?

Comment récupérer par programme le facteur de mise à l'échelle de l'affichage Windows en C# ?

Mary-Kate Olsen
Libérer: 2025-01-15 12:10:43
original
498 Les gens l'ont consulté

How to Programmatically Retrieve Windows Display Scaling Factor in C#?

Accès aux paramètres d'affichage de Windows en C#

Windows 7 et versions ultérieures fournissent un paramètre du Panneau de configuration permettant aux utilisateurs d'ajuster la taille du texte et des éléments de l'interface utilisateur. Les développeurs C# ont souvent besoin de récupérer ce paramètre pour le comportement dynamique des applications.

Une solution pratique

L'utilisation directe de graphics.DpiX et DeviceCap.LOGPIXELSX renvoie de manière inattendue une valeur fixe (96 DPI), quelle que soit la mise à l'échelle réelle. Pour déterminer avec précision le facteur d'échelle, une approche différente est nécessaire :

<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 for 125% scaling
    }
}</code>
Copier après la connexion

Cet extrait de code exploite GetDeviceCaps pour comparer les hauteurs d'écran logiques et physiques, fournissant ainsi un facteur de mise à l'échelle précis. Un résultat de 1,25, par exemple, indique un niveau de mise à l'échelle de 125 %.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal