Windows Phone 8 用の Direct3D アプリから画面の解像度を検出する方法
2013/03/11
対象: Windows Phone 8 のみ
ここでは、Windows Phone Direct3D アプリ から画面解像度を決定する方法を示します。Windows Phone 8 は、解像度が WVGA、WXGA、および 720p の電話をサポートしています。CoreWindow クラスの Bounds プロパティは、デバイスに依存しないピクセル単位で画面解像度を返します。たとえば、Bounds は WXGA の電話では 480 x 800 を返しますが、この電話の物理的なピクセル単位の解像度は 768 x 1280 です。ResolutionScale プロパティを使用して、デバイスに依存しないピクセル単位の解像度から物理的なピクセル単位の解像度を特定できます。
Windows Phone 8 アプリでターゲットにできる解像度と縦横比を次の表に示します。
解像度 | ピクセル | 縦横比 | Windows Phone OS 7.1 からの変更 | スケーリングされた解像度 |
|---|---|---|---|---|
WVGA | 480 x 800 | 15:9 | なし | 480 x 800 |
WXGA | 768 x 1280 | 15:9 | 1.6x (倍) の倍率 | 480 x 800 |
720p | 720 x 1280 | 16:9 | 1.5x の倍率、高さは 80 ピクセル大きくなっています (拡大前は 53 ピクセル) | 480 x 853 |
画面解像度に基づく読み込むイメージの決定
ResolutionScale プロパティを照会します。返された値が Scale100Percent である場合、画面が WVGA であることがわかります。返された値が Scale150Percent である場合、画面が WXGA であることがわかります。値が Scale16Percent である場合、画面は 720p です。
switch (DisplayProperties::ResolutionScale) { case ResolutionScale::Scale100Percent: LoadSmallBitmaps(); break; case ResolutionScale::Scale150Percent: LoadMediumBitmaps(); break; case ResolutionScale::Scale160Percent: LoadLargeBitmaps(); break; }
画面サイズの物理的なピクセル数への変換
GetForCurrentThread() メソッドを呼び出して、アプリの CoreWindow オブジェクトへの参照を取得します。Bounds プロパティを確認します。返された幅と高さに、ResolutionScale / 100.0 を乗算して、物理的なピクセル単位でのサイズを取得します。
CoreWindow^ m_window = CoreWindow::GetForCurrentThread(); Rect bounds = m_window->Bounds; bounds.Height *= ((int) DisplayProperties::ResolutionScale) / 100.0; bounds.Width *= ((int) DisplayProperties::ResolutionScale) / 100.0;