我遇到了一个无法克服的问题。我已经花了两天时间没有成功,所以我终于决定问你们了。
我想要的: 在具有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设备的关系不同。
有人有线索吗?
答案 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
)。