无法确定WP8.1 HD / FHD设备上状态栏int WP8.0 app的尺寸

时间:2014-11-25 14:07:18

标签: windows-phone-8 windows-phone-8.1 statusbar

我遇到了一个无法克服的问题。我已经花了两天时间没有成功,所以我终于决定问你们了。

我想要的: 在具有HD或FHD分辨率的WP 8.1手机上运行WP 8.0应用程序时,我需要知道状态栏的确切尺寸。

为什么我需要它: 我使用DrawingSurfaceBackgroundGrid来渲染图形。 DrawingSurfaceBackgroundGrid始终使用全屏作为渲染目标。我不想在状态栏下绘图,因此我使用状态栏尺寸来正确修剪视口。

问题是什么:

以下是WP 8.0手机的工作原理: 状态栏在逻辑像素中具有常量尺寸: 在纵向模式下,它们是480px x 32px。 在横向模式下,它们是72px x 800px(15:9宽高比)或72px x 853px(16:9宽高比)

以下是它在WP 8.1设备上的工作原理: 在具有15:9宽高比的设备上,行为与WP 8.0设备上的行为相同。

在16:9设备上,事情变得更加复杂。

在纵向模式下,WP 8.1不使用32px作为状态栏。相反,WP 8.1使用一些未指定数量的像素用于状态栏,而一些未指定数量的像素用于屏幕底部的黑条。这些金额的总和等于32px。

在横向模式下,WP 8.1不会将72px用于状态栏。相反,WP 8.1使用一些未指定数量的像素用于状态栏,而一些未指定数量的像素用于屏幕右/左边缘的黑条。这些金额的总和等于72px。

状态栏的大小与上述黑条大小的关系对我来说是一个谜。 FHD设备与HD设备的关系不同。

有人有线索吗?

1 个答案:

答案 0 :(得分:0)

这应该为您提供Windows Phone WinRT中StatusBar的高度。

private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
{
    var transform = LayoutRoot.TransformToVisual(Window.Current.Content);
    Point coords = transform.TransformPoint(new Point(0, 0));
    double height = coords.Y;
}

LayoutRoot是Grid根目录中的主要控件(通常是Page)。