【问题标题】:Get available screen size获取可用的屏幕尺寸
【发布时间】:2024-05-21 23:10:02
【问题描述】:

如何在 Win 10 UWP 上获得应用可以调整到的最大屏幕尺寸?

还可以检测应用程序是否已最大化或在手机/平板电脑模式下运行还是在窗口模式下运行?

【问题讨论】:

    标签: windows-10 uwp


    【解决方案1】:

    本身没有“最大尺寸”。 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 控制“模式”的某些方面。

    【讨论】:

      【解决方案2】:

      作为一个想法:检查应用程序是否在手机/平板电脑/PC 上运行,您可以使用自定义 VisualStateTriggers 并检查设备系列。网上有一些样本。

      也许这有帮助?!

      【讨论】:

        【解决方案3】:

        应用可以调整到的最大尺寸(即“工作区”,即屏幕尺寸减去任务栏)?无法获取此信息。

        注意:您可以调用 ApplicationView.GetForCurrentView().TryResizeView(New Size(500, 500)) 以编程方式调整大小。但这不会调整大于工作区的大小。

        是否可以检测到应用处于什么模式?

        UIViewSettings.GetForCurrentView.UserInteractionMode 说明您是处于“鼠标模式”(窗口)还是“触摸模式”(手机/平板电脑)。

        ApplicationView.GetForCurrentView.TryEnterFullScreenMode() 会尝试让你进入全屏模式(在桌面上,这意味着你的应用是全屏,没有任务栏;在手机上,这意味着有没有状态栏,也没有“软导航按钮”)。您也可以调用 ExitFullScreenMode()。 IsFullScreenMode 属性会说明您是否已通过该 API 进入全屏模式。 (您不应该使用另一个名为“IsFullScreen”的已弃用 API)。

        我不知道如何检测它是否被最大化。

        【讨论】:

        • 如果显示器是集成的(手机、平板电脑、笔记本电脑),您可以使用GetIntegratedDisplaySize 确定显示器尺寸。不幸的是,在多显示器场景中,它不会告诉您您是否在集成显示器上。
        【解决方案4】:

        ApplicationView.GetForCurrentView().IsFullScreen 可以帮助您检测您的应用是否处于全屏模式。我想这就是你需要的。

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
        • 谢谢。我会考虑的
        最近更新 更多