Windows 8アプリの解像度に応じて要素の高さを設定できるように、画面の解像度を知りたいです。
これはどう?
var bounds = Window.Current.Bounds;
double height = bounds.Height;
double width = bounds.Width;
現在のウィンドウの境界を取得するのは簡単です。ただし、大きな画面に大きなフォントサイズを設定する場合(解像度は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;
}
おそらく、DirectX対応アプリに最適なオプションは、他のすべての種類のメトロアプリに適用可能です:
追伸さて、画面の解像度を決定するためにウィンドウサイズを取得しますか?スナップ/塗りつぶしモードはどうですか?この世界はとても壊れています:-/
どうやら私はまだ投稿に返信するのに十分な担当者を持っていませんが、@ Krishnaの答えに関しては、彼の解決策が必要とすることに注意する価値があるかもしれません:
using Windows.UI.Xaml;
おそらくほとんどの人にとっては問題ではないかもしれませんが、私の場合(インポートされたライブラリからアプリを実行する解像度を取得しようとしています)、デフォルトではありませんでした。
これが他の誰かに役立つことを願っています...
XAMLを使用していますか?もしそうなら、それは問題ではありません。グリッドコントロールを使用します。使用可能なすべてのスペースがいっぱいになります。 WinRT開発にxamlを使用する理由について Jerryのブログ を読んでください。