如何在 Win 10 UWP 上获得应用程序可以调整到的最大尺寸的屏幕尺寸?
是否可以检测应用程序是否已最大化或在手机/平板电脑模式与窗口模式下运行?
应用程序可以调整到的最大尺寸(即“工作区”,即屏幕尺寸减去任务栏)?没有办法获得这些信息。
注意:您可以调用 ApplicationView.GetForCurrentView().TryResizeView(New Size(500, 500)) 以编程方式调整大小。但这不会调整大于工作区的大小。
是否可以检测应用程序处于什么模式?
UIViewSettings.GetForCurrentView.UserInteractionMode表示您是处于“鼠标模式”(窗口)还是“触摸模式”(手机/平板电脑)。
ApplicationView.GetForCurrentView.TryEnterFullScreenMode()将尝试让您进入全屏模式(在桌面上,这意味着您的应用是全屏,没有任务栏;在手机上,这意味着没有状态栏,也没有“软导航按钮”) . 您也可以调用 ExitFullScreenMode()。IsFullScreenMode属性将说明您是否已通过该 API 进入全屏模式。(还有另一个不推荐使用的名为“IsFullScreen”的 API,您不应该使用它)。
我不知道如何检测它是否已最大化。
应用程序视图 .GetForCurrentView()。IsFullScreen可以帮助您检测您的应用是否处于全屏模式。我想这就是你需要的。
本身没有“最大尺寸”。Windows 10 对 8K 分辨率 (7680*4320) 的支持已在媒体中提及,因此这已接近您将看到的“最大尺寸”,并且在不久的将来肯定不会成为常见的显示尺寸。
请记住,通用 Windows 应用程序和 Windows 8 应用商店应用程序将窗口大小表示为逻辑大小和 DPI 的组合。您可以使用以下数学将其转换为物理像素:
// Converts a length in device-independent pixels (DIPs) to a length in physical pixels.
inline float ConvertDipsToPixels(float dips, float dpi)
{
static const float dipsPerInch = 96.0f;
return floorf(dips * dpi / dipsPerInch + 0.5f); // Round to nearest integer.
}
有关显示的信息是从 WinRT 类获得的DisplayInformation
,您可以使用 控制“模式”的某些方面ApplicationView
。
作为一个想法:检查应用程序是否在手机/平板电脑/个人电脑上运行,您可以使用自定义 VisualStateTriggers 并检查设备系列。网上有一些样片。
也许这有帮助?!