web-dev-qa-db-fra.com

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

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

34
a_rahmanshah

Que dis-tu de ça?

var bounds = Window.Current.Bounds;

double height = bounds.Height;

double width = bounds.Width;
80
Krishna

Obtenir les limites de la fenêtre actuelle est facile. Mais disons que si vous voulez définir une grande taille de police pour un écran plus grand (la résolution est la même que pour un appareil de 10 ", mais l'écran est de 27"), cela n'aidera pas. Reportez-vous Mise à l'échelle sur différents écrans J'ai utilisé la méthode suivante pour détecter la taille de l'écran et changer 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;
    }
13
Thiru

La meilleure option pour les applications compatibles DirectX, 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 pour déterminer la résolution de l'écran? Qu'en est-il des modes cassés/remplis? Ce monde est tellement brisé: - /

6
Anton

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 convient de noter que sa solution nécessite:

using Windows.UI.Xaml;

probablement pas un problème pour la plupart d'entre vous, mais dans mon cas (en essayant de récupérer la résolution de l'exécution de l'application à partir d'une bibliothèque importée), elle n'était pas là par défaut.

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

3
steveb

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 pouvez utiliser xaml pour le développement de WinRT.

2
Shawn Kendrot