2016-11-20 87 views
3

我想从我的UWP中的后台任务访问DisplayInformation类,该任务将图像从原始分辨率调整为用户屏幕大小,以便可以将其设置为壁纸。UWP中的DisplayInformation后台任务

但是,当我尝试使用DisplayInformation.GetForCurrentView()时,会引发异常,说该方法必须从与CoreWindow关联的线程中调用。我怎样才能避免这种情况?

任何解决方案都可以工作,只要它能以原始像素为单位给出用户屏幕的完整宽度和高度。

+0

“用户的屏幕”不明确。可能有多个屏幕(PC多用户,手机连续)。可以有无数的屏幕(HoloLens)。这就是为什么你需要一个核心窗口。所以系统知道你在询问哪个屏幕。 –

回答

5

此API需要CoreWindow,因为您的系统上可能有多个显示器,并且需要知道选择哪一个(它选择当前显示窗口的显示器)。最好的解决方案是在前台应用程序运行时查询属性,然后保存它们以备后用。 (当然,如果用户有两个或更多不同大小的显示器,并且你选择了“错误”的显示器,或者他们升级了显示器等,但这是你能做到的最好的),这并不是完美的。

+0

在这种情况下,是否可以简单地获取所有附加显示的列表,并将图像合并到最大的显示? – 333

+1

HoloLens按需创建显示。没有这样的东西作为所有显示器的列表,因为它们的数量是无限的。 (宇宙中任何平坦的表面都可以成为显示器。) –

+0

@RaymondChen好的,谢谢 – 333