【问题标题】:Get Bounds For All Monitor Displays in UWP Application获取 UWP 应用程序中所有监视器显示的边界
【发布时间】:2018-05-16 19:34:11
【问题描述】:

如何从 UWP 应用程序中获取每个物理显示器的边界?我曾经能够做到这一点:

System.Windows.Forms.Screen.AllScreens;

我见过使用示例

DisplayInformation.GetForCurrentView();

但这只会获取应用程序当前运行的屏幕大小。我有一个正在构建的垂直屏幕应用程序,我希望它始终在我的垂直显示器而不是我的主水平显示器上启动。我了解 UWP 应用程序应该与分辨率无关,但这里不是这种情况。这是一个专为在非常特殊的显示器上工作而设计的应用程序。

请,这只是 UWP 问题。 This Question 是在 UWP 出现之前 6 年编写的。这不是重复的。

【问题讨论】:

  • @IgnacioSolerGarcia 您引用的问题是针对标准 .NET 桌面应用程序的。不是 UWP 应用。
  • @IgnacioSolerGarcia 您介意删除您的关闭请求吗?这些绝对不是一回事。

标签: c# uwp uwp-xaml multiple-monitors


【解决方案1】:

目前在 UWP 中似乎确实没有 API 可以实现这一点。您可以将此想法发布到UWP UserVoice,以便将其视为您想要的。

你能做的最好的就是查询应用程序运行的显示器的分辨率,如你所说,并使用ProjectionManager枚举所有显示器:

var deviceSelector = ProjectionManager.GetDeviceSelector();            
var devices = await DeviceInformation.FindAllAsync(deviceSelector);
foreach (var device in devices)
{
    Debug.WriteLine("Kind: {0} Name: {1} Id: {2}", device.Kind, device.Name, device.Id);
    foreach (var property in device.Properties)
    {
        Debug.WriteLine( property.Key + " " + property.Value);
    }
}

很遗憾,设备属性不包含您可以使用的分辨率信息。

【讨论】:

  • 谢谢@Martin!我开始认为我应该坚持使用 WPF。 UWP 可能不适合我。我很难相信 UWP 有多么残缺。我知道它应该是一个沙盒,但它非常有限。
  • 每次更新都会获得越来越多的 API :-)。但是现在有了 Build 中宣布的新功能,您可以从 WPF 开始并不断将其升级到 UWP,包括使用 XAML 岛的 UI 和使用 .NET Core 3.0 的运行时。您甚至可以在 WPF 应用程序中使用 Fluent Design System 的部分内容
  • 而且 WPF 应用程序无论如何都可以进入商店,所以这本身不是什么大问题 :-)
猜你喜欢
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
相关资源
最近更新 更多