Window.Current.按方向不带状态栏的边界高度
本文关键字:状态栏 边界 高度 Current 方向 Window | 更新日期: 2023-09-27 17:59:37
我正在计算屏幕宽度和高度,它似乎关闭了。看起来状态栏的高度或宽度包含在Window.Current.Bounds
中。
它的纵向高度应该是32像素,横向高度应该是72像素,但它似乎是按比例缩放的,因为Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect.Height
显示26.6667和60。
获取屏幕高度和宽度(不包括状态栏)的最佳方法是什么?
private void LayoutControls()
{
var bounds = Window.Current.Bounds;
var scale = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect;
if (bounds.Width < bounds.Height)
{
// Portrait
bounds.Height -= 32d / scale;
}
else
{
// Landscape
bounds.Width -= 72d / scale;
}
// do something with new bounds
}
从来都不是32岁,也从来都不是72岁。/ scale
适用于某些DPI手机,但不适用于1080p。调查Windows.UI.ViewManagement.StatusBar.GetForCurrentView().OccludedRect
给出了似乎正确的高度,但不会随着Window.Current.SizeChanged
事件而更新。
有什么想法吗?
尝试
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds.Height;
正如文件所说:
Gets the visible region of the window (app view). The visible region is the region not occluded by chrome such as the status bar and app bar.