c# - 解像度 - wpf dpi 取得




どのように画面の解像度を取得するには? WinRTアプリケーションの場合は? (4)

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

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



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

using Windows.UI.Xaml;

おそらくあなたのほとんどの問題ではありませんが、私の場合(インポートされたライブラリからアプリケーションを実行する解決策を得ようとする)、デフォルトではそこにはありませんでした。

これが他の人に役立つことを願って


現在のウィンドウの範囲を取得するのは簡単です。 しかし、もっと大きなスクリーン(解像度は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;
    }






windows-runtime