34 votes

Comment obtenir la résolution de l'écran? Pour une application WinRT?

Je souhaite connaître la résolution de l'écran afin de pouvoir définir la hauteur d'un élément en fonction de la résolution dans une application Windows 8.

80voto

Krishna Points 2422

Que dis-tu de ça?

 var bounds = Window.Current.Bounds;

double height = bounds.Height;

double width = bounds.Width;
 

13voto

Thiru Points 387

Obtenir les limites de la fenêtre actuelle est facile. Mais si vous voulez définir une taille de police importante pour un écran plus grand (la résolution est identique à celle d'un périphérique de 10 ", mais celle de l'écran est de 27"), cela ne vous aidera pas. Reportez-vous à la rubrique Mise à l'échelle sur différents écrans. J'ai utilisé la méthode suivante pour détecter la taille de l'écran et modifier le style de police du bloc de texte de manière appropriée.

          void detectScreenType()
    {
        double dpi = DisplayProperties.LogicalDpi;
        var bounds = Window.Current.Bounds;
        double h;
        switch (ApplicationView.Value)
        {
            case ApplicationViewState.Filled:
                h = bounds.Height;
                break;

            case ApplicationViewState.FullScreenLandscape:
                h = bounds.Height;
                break;

            case ApplicationViewState.Snapped:
                h = bounds.Height;
                break;

            case ApplicationViewState.FullScreenPortrait:
                h = bounds.Width;
                break;

            default:
                return;
        }
        double inches = h / dpi ;
        string screenType = "Slate";
        if (inches < 10)
        {
            screenType = "Slate";
        } else if (inches < 14) {
            screenType = "WorkHorsePC";
        }
        else 
        {
            screenType = "FamilyHub";
        }
        ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
        localSettings.Values["screenType"] = screenType;
    }
 

6voto

Anton Points 1726

Probablement la meilleure option pour DirectX apps compatibles, cependant, applicable à tous les autres types d'applications metro est:

http://blogs.microsoft.co.il/blogs/tomershamam/archive/2012/07/24/get-screen-resolution-in-windows-8-metro-style-application.aspx

P. S. allez, obtenir la taille de la fenêtre afin de déterminer la résolution de l'écran? Qu'en est cassé/rempli modes? Ce monde est tellement cassé :-/

3voto

steveb Points 167

apparemment, je n'ai pas encore assez de représentants pour répondre aux messages, mais en ce qui concerne la réponse de @ Krishna, il peut être intéressant de noter que sa solution nécessite:

 using Windows.UI.Xaml;
 

Ce n’est probablement pas un problème pour la plupart d’entre vous, mais dans mon cas (essayer de saisir la résolution de l’exécution d’une application depuis une bibliothèque importée), ce n’était pas là par défaut.

J'espère que ceci aide quelqu'un d'autre...

2voto

Shawn Kendrot Points 8892

Utilisez-vous XAML? Si c'est le cas, cela n'a pas d'importance. Utilisez le contrôle Grid. Il remplira tout l'espace disponible. Lisez le blog de Jerry pour savoir pourquoi vous pourriez vouloir utiliser xaml pour le développement WinRT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X