2016-11-20 7 views
3

Ich möchte auf die Klasse DisplayInformation von einer Hintergrundaufgabe in meinem UWP zugreifen, die ein Bild aufnimmt und dessen Größe von der nativen Auflösung auf die Größe des Benutzerbildschirms ändert, sodass es als Hintergrundbild festgelegt werden kann .DisplayInformation in UWP Hintergrundaufgabe

Wenn ich jedoch versuche, DisplayInformation.GetForCurrentView() zu verwenden, wird eine Ausnahme ausgelöst, die besagt, dass die Methode von einem Thread aufgerufen werden muss, der einem CoreWindow zugeordnet ist. Wie kann ich das vermeiden?

Jede Lösung funktioniert so lange, wie es mir die vollständige Breite und Höhe des Benutzerbildschirms in rohen Pixeln gibt.

+0

"Der Bildschirm des Benutzers" ist mehrdeutig. Es könnte mehr als einen Bildschirm geben (PC Multimon, Telefonkontinuum). Es könnte eine unendliche Anzahl von Bildschirmen (HoloLens) geben. Deshalb brauchen Sie ein Kernfenster. Das System weiß also, um welchen Bildschirm es sich handelt. –

Antwort

5

Diese API erfordert eine CoreWindow, da Sie mehrere Monitore auf Ihrem System haben können, und es muss wissen, welche zu wählen (es wählt die, die das Fenster gerade anzeigt). Die beste Lösung besteht darin, die Eigenschaften abzufragen, wenn Ihre Vordergrundanwendung ausgeführt wird, und sie dann für die spätere Verwendung zu speichern. (Natürlich ist dies nicht perfekt, wenn der Benutzer zwei oder mehr Monitore unterschiedlicher Größe hat und Sie die "falsche" wählen, oder sie aktualisieren den Monitor usw., aber es ist das Beste, was Sie tun können).

+0

Wäre es in diesem Fall möglich, einfach eine Liste aller angeschlossenen Displays zu erhalten und das Bild an das größte anzupassen? – 333

+1

HoloLens erstellt Displays auf Anfrage. Es gibt keine Liste aller Anzeigen, da es unendlich viele gibt. (Jede flache Oberfläche im Universum kann eine Anzeige sein.) –

+0

@RaymondChen Alles klar, danke – 333

Verwandte Themen