信息
您所需的主题如下所示。但此主题未包含在此库中。

如何从 Windows Phone 8 的 Direct3D 应用中检测屏幕分辨率

2014/6/18

仅适用于:Windows Phone 8 和 Windows Phone Silverlight 8.1

 

本主题向您演示了如何从 Windows Phone Direct3D 应用 中确定屏幕分辨率。Windows Phone 8 支持具有 WVGA、WXGA 和 720p 分辨率的手机。CoreWindow 类的 Bounds 属性用与设备无关的像素返回屏幕分辨率。例如,Bounds 在 WXGA 手机上返回 480 × 800,但该手机用物理像素表示的分辨率是 768 × 1280。您可以使用 ResolutionScale 属性,根据以与设备无关的像素表示的分辨率确定以物理像素表示的分辨率。

下表说明在 Windows Phone 8 应用中,您可以使用的分辨率和纵横比。

解决

像素

纵横比

从 Windows Phone OS 7.1 更改

按比例缩放的分辨率

WVGA

480 × 800

15:9

480 × 800

WXGA

768 × 1280

15:9

1.6x 的比例

480 × 800

720p

720 × 1280

16:9

1.5x 的比例,高度增加 80 个像素(缩放前为 53 个像素)

480 × 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;
    
    
    

显示: