web-dev-qa-db-ja.com

画面の解像度を取得する方法は? WinRTアプリの場合

Windows 8アプリの解像度に応じて要素の高さを設定できるように、画面の解像度を知りたいです。

34
a_rahmanshah

これはどう?

var bounds = Window.Current.Bounds;

double height = bounds.Height;

double width = bounds.Width;
80
Krishna

現在のウィンドウの境界を取得するのは簡単です。ただし、大きな画面に大きなフォントサイズを設定する場合(解像度は10インチのデバイスと同じですが、画面は27インチです)、これは役に立ちません。 異なる画面へのスケーリング を参照してください。画面サイズを検出し、テキストブロックのフォントスタイルを適切に変更するには、次の方法を使用しました。

         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

おそらく、DirectX対応アプリに最適なオプションは、他のすべての種類のメトロアプリに適用可能です:

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

追伸さて、画面の解像度を決定するためにウィンドウサイズを取得しますか?スナップ/塗りつぶしモードはどうですか?この世界はとても壊れています:-/

6
Anton

どうやら私はまだ投稿に返信するのに十分な担当者を持っていませんが、@ Krishnaの答えに関しては、彼の解決策が必要とすることに注意する価値があるかもしれません:

using Windows.UI.Xaml;

おそらくほとんどの人にとっては問題ではないかもしれませんが、私の場合(インポートされたライブラリからアプリを実行する解像度を取得しようとしています)、デフォルトではありませんでした。

これが他の誰かに役立つことを願っています...

3
steveb

XAMLを使用していますか?もしそうなら、それは問題ではありません。グリッドコントロールを使用します。使用可能なすべてのスペースがいっぱいになります。 WinRT開発にxamlを使用する理由について Jerryのブログ を読んでください。

2
Shawn Kendrot