Anwendungen auf Windows 8.1 unscharf/blurry
Nachdem Microsott IT so nett war, mit System Center Configuration Manager meinen Laptop über Direct Access im Expresstempo auf Windows 8.1 umzustellen, bin ich bei meiner Hardware auf ein Problem gestoßen, dass uns in der Zukunft noch eine Weile beschäftigen wird:
Anwendungen erscheinen unscharf auf hochauflösenden Displays.
Damit jeder verstehen kann, was ich meine, zeige ich als erstes einen Screenshot. Ein Bild sagt bekanntlich mehr als tausend Worte:
Der Screenshot stammt von meinem primären Arbeitsgerät, einem Samsung Ativ 700T1. Bei einer Größe von 11,6 Zoll beträgt die Auflösung 1.920 x 1.080 Pixel (Full HD). Bei so einer hohen Pixeldichte stelle ich die Größe aller Elemente auf 125%.
In Windows 8.1 erfolgt das automatisch. Manuell einstellen lässt es sich in der Systemsteuerung unter “Darstellung und Anpassung” > “Anzeige”:
Das Problem, dass ich bis Windows 8 dabei hatte, war der Multi-Monitor-Betrieb. Immer wenn ich im Büro oder Zuhause einen zweiten oder dritten Bildschirm angeschlossen hatte, war auf dem die gleiche Vergrößerung im Einsatz. Das war vor allem störend auf VGA-Projektoren bei einer Auflösung von 1.024 x 768 Pixeln. Da war kaum noch sinnvoll zu nutzender Platz auf dem Bildschirm. Es ist aber auch ein Problem bei 4k-Displays:
Mit Windows 8.1 wird mit der automatischen Bildschirmskalierung nun alles besser. Damit kann man mehrere Bildschirme gleichzeitig mit unterschiedlichen Pixeldichten betreiben. Windows kümmert sich automatisch um die Skalierung der Fenster.
An sich eine tolle Sache, wäre da nicht ein Haken: Das Problem bei hohen Pixeldichten waren schon immer die Anwendungen. Sind diese nicht HighDPI-fähig, kann Windows nur durch Bitmap-Vergrößerung/Verkleinerung skalieren. Dadurch schlagen wir uns dann mit unscharfen Bildern herum.
Die Alternative sind Fehler in der UI wie zum Beispiel falsche Zeilenumbrüche, nicht mehr erreichbare Buttons, etc. Das Problem ist nicht von Windows allein lösbar – die Anwendungen müssen hier auch mitspielen. Das ist übrigens auch ein Grund, warum Ribbons Einzug gehalten haben in Windows. Ribbons sind optimale Controls zur Verwendung bei unterschiedlichen Pixeldichten:
Wer als Anwendungsentwickler näheres zur Programmierung von HighDPI-fähigen Anwendungen erfahren will, sei auf das Whitepaper Writing DPI-Aware Desktop Applications in Windows 8.1 und den Artikel Writing High-DPI Win32 Applications verwiesen.
Wenn man den Screenshot von oben in voller Größe betrachtet, kann man sehen, dass links der Internet Explorer 11 glasklar zu lesen ist, während rechts in Google Chrome Schrift und Programm-UI unscharf dargestellt werden. Ich habe ihn in voller Auflösung als Anhang unten an den Beitrag angehängt.
Die Ursache des Problems ist die Tatsache, dass Google Chrome sich als nicht HighDPI-fähiges Programm gegenüber dem Betriebssystem ausweist. Wen die Hintergründe interessieren, der sei auf den Blogeintrag Scaling to different Screens vom Building Windows 8-Blog verwiesen.
Für Google Chrome stammt der entsprechende Bugeintrag vom 16.09.2012. Bisher ist der Bug aber immer noch nicht gelöst. Er hat als unangenehme Nebenwirkung, dass die Bedienung durch Touch mit Google Chrome nicht richtig funktioniert.
Für Retina-Displays gab es in der Mac OS X-Version recht zügig einen Workaround, was einfacher war, weil es dort nur zwei verschiedene Pixeldichten zu beachten gibt. Retina-Displays sind nicht umsonst genau 2x größer als die vorher verwendeten Displays.
Windows-PCs dagegen gibt es mit unterschiedlichsten Displaygrößen. Mit der Vielfalt unseres Ökosystems, das dem Kunden echte Wahlfreiheit bietet, gibt es eben auch einen größeren Arbeitsaufwand für Programmierer. Hier eine Statistik über die übliche Bildschirmauflösungen bei Windows-PCs…
…und der üblichen Auflösungen und Bildschirmgrößen in Windows 8:
Nachdem für Google Chrome die Aussage der Entwickler “Gene will hopefully be fixing this up in the next few days, or at least ascertaining what needs to be done.” etwas optimistisch war (das ist demnächst auch schon ein Jahr her), habe ich mich umgeschaut, welche anderen Möglichkeiten heute als Workaround sich anbieten.
Als erstes kann man natürlich die systemweiten Einstellungen verändern. Wenn man die Option “Manuell eine Skalierungsstufe für alle Anzeigegeräte auswählen” aktiviert, bekommt man das frühere Verhalten wieder zurück und alle Anwendungen verhalten sich mehr oder weniger konsistent.
Der Nachteil ist der Verlust der automatischen Skalierung bei mehreren Bildschirmen. Wer nur einen Bildschirm oder mehrere Bildschirme mit ähnlicher Pixeldichte hat, für den mag das gehen. Da ich gerade eine Lösung für unterschiedliche Pixeldichten brauche, hilft mir das nicht weiter.
Zweite Lösung ist das Abschalten der automatischen Skalierung auf Anwendungsebene. Dazu muss man in der Programmverknüpfung die Option “Skalierung bei hohem DPI-Wert deaktivieren” setzen. Am Beispiel von Google Chrome geht man in den Ordner
"%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Google Chrome"
und ändert die Einstellungen in den Eigenschaften der Verknüpfung von Google Chrome auf dem zweiten Tab:
Danach muss man zwar die Programm-UI von Chrome möglicherweise mit der Lupe bedienen, aber den Webseiteninhalt kann man mit STRG + PLUS vergrößern. Die Schriften und Grafiken werden dann wieder glasklar dargestellt und die Toucheingabe funktioniert auch wieder.
Natürlich kann man auch gleich zu einem HighDPI-fähigen, modernen Browser wechseln. Internet Explorer 11 wird von uns mitgeliefert und zeigt keines dieser Probleme ;-)
Ich hoffe, dass jetzt durch Windows 8.1 der Druck auf Anwendungsentwickler soweit erhöht wird, dass diese seit mehr als 10 Jahren sträflich vernachlässigte Funktion als Standardfall beim Testen mitberücksichtigt wird.
Have fun!
Daniel
Comments
Anonymous
October 23, 2013
Tausend Dank für die umfassende Darstellung des Themas mit den passenden Lösungsvorschlägen und vor allem mit den tiefergehenden Links für Entwickler! Aber eine Spitze muss sein: IE 8.1 mag zwar High DPI fähig sein, dafür hat er aber einige andere Probleme mit der Darstellung von Webseiten wie hier newyear2006.wordpress.com/.../internet-explorer-11-ist-sehr-langsam-ups-wo-ist-der-kompatibilittsmodus-geblieben und hier www.heise.de/.../Aktueller-Internet-Explorer-11-kollidiert-mit-Google-und-Microsoft-Seiten-1982569.html dokumentiert ;-)Anonymous
October 23, 2013
Super vielen Dank für deine Beschreibung. Mich hat das auch extrem genervt. Jetzt passt alles wieder. Sensationell! Mal wieder etwas dazu gelernt.Anonymous
October 25, 2013
Hi Daniel, ich habe ein Notebook mit 1920x1080 und einen externen Monitor mit 1920x1200. Ich benutze entweder den internen Monitor oder den externen. Nie beide. Folgendes Verhalten. des IE11:
- Interner Monitor Skalierung 100% alles super.
- Externer Monitor wird angeklemmt und ich habe eine Skalierung von 85% was natürlich irgendwie "doof" ist. Also auf 100% umschalten.
- Externer Monitor wird wieder abgeklemmt, weil ich nach Hause gehe und mein Notebook mitnehme. Interner Monitor mit IE11 hat Skalierung von 125% was mir zu groß ist. Die Frage: Kann man dieses Verhalten abstellen? Ich will KEINE automatische Anpassung von irgendwelchen Applikationen in Abhängigkeit des angeschlossenen Monitors. Und ja, in der Systemsteuerung bei Skalierung steht bei mir "Kleiner" Und der Haken bei "Manuell eine Skalierungsstufe für alle Anzeigegeräte auswählen" bewirkt bei mir auch nicht das gewünschte Verhalten. Windows 8 hatte mit all dem genau kein Problem. ;) Danke Norbert
Anonymous
October 27, 2013
The comment has been removedAnonymous
October 29, 2013
The comment has been removedAnonymous
October 29, 2013
Wir können ja hier weiter diskutieren. ;) www.mcseboard.de/.../195456-windows-81-ie11-skalierungAnonymous
October 29, 2013
Outlook und Onenote und so weiter haben das gleiche Problem. Ich wäre vorsichtig wenn ich den Internetexplorer loben würde. Bisher war dieser immer zwei Schritte hinten dran. Inzwischen habt ihr aufgeschlossen. Das ist das lob von meiner Seite. Weier so. MS ist auf dem richtigen Weg und ich bin inzwischen wieder voll auf eure Produkte umgestiegen.Anonymous
November 04, 2013
Hat funktioniert aber nicht überall. Ich brauch Hilfe ! Weil alles jetzt so unscharf ist ich denke jetzt immer warum ich das Windows 8.1 update gemacht habe!!Anonymous
November 04, 2013
Vielen Dank für den guten Hinweis und die Erklärung. Ich habe aber das Problem, dass seit dem Update auf Windows 8.1 (zumindest war es mir vorher nicht aufgefallen) der Gerätemanager und auch die Treibermenüs unscharf erscheinen. Bei den Programmen, wie bei mir zum Beispiel Microsoft Picture Manager, mag das ja an dem oben beschriebenen Problem liegen. Aber ist dies auch beim Gerätemanager bzw. bei den Treibermenüs so? Diese sind ja in Windows 8.1 implementiert. [Bildschirmauflösung 1920 x 1080, das Umstellen auf manuelle Skalierung hat dabei keine Verbesserung ergeben]Anonymous
November 04, 2013
The comment has been removedAnonymous
November 05, 2013
Vielen Dank für die ausführliche Erklärung! Da es viele Leute allerdings nicht in dieser Tiefe wissen wollen, schlage ich vor, ganz oben kurz zu erklären, wie man das frühere Verhalten wieder einstellen kann. Ist ja nur der eine Haken... :)Anonymous
November 10, 2013
das kann man auch in chrome aktivieren: chrome://flags/ HiDPI-Support Windows Bei Aktivierung werden Größe und Layout von Anwendungen an die DPI-Einstellungen des Betriebssystems angepasst. #high-dpi-support ist aber noch nicht standardmäßig aktiviert weil es noch bugs gibt: code.google.com/.../detailAnonymous
November 11, 2013
@fivehundred: Hey, das hier ist ein Blog und nicht Twitter ;-) @n3s: Das stimmt. Das Feature sieht aber nicht wirklich Primetime-ready aus. Das Schriftkerning (Abstände zwischen den Buchstaben) ist bei mir fehlerhaft, die gesamte UI ist einfach nur aufgeblasen und wirkt zu groß, der Button für einen neuen Tab ist unvollständig, Probleme mit Toolbars, etc. Have fun!
DanielAnonymous
November 19, 2013
Ok, ich habe das jetzt sehr gründlich durchgelesen und getestet. Und kann in keiner Weise eine gute Lösung finden. Monitore: 15" Notebook mit Full HD + großer Monitor mit 1680x1050 Manuelle Skalierung auf 100% ist für den externen Monitor perfekt, 125% für das FullHD Notebook. Beide Einstellungen sind auf beiden Monitoten mit allen Programmen (außer ein paar Icons) gestochen scharf. Stelle ich jetzt auf automatische Skalierung, erscheint es so, als würde 125% intern und 100% auf dem externen Monitor verwendet werden, viele Schriften werden unscharf und sehen furchtbar aus. Dabei gibt es drei Sorten von Programmen: Chrome: ist auf externen Monitor scharf, auf internem nicht. Firefox: genau umgekehrt IE 11: auf beiden scharf, ABER: er skaliert nicht, sondern verhält sich auf dem externen Monitor so, als wäre die Skalierung weiter 125%. Super, damit bin ich wieder ganz am Anfang, das konnte ich auch manuell einstellen. Ist das die Idee der automatischen Skalierung, das Programme entweder unscharf sind, oder eben nicht, sich dann aber der automatischen Skalierung widersetzen???Anonymous
November 26, 2013
Vielen lieben Dank Daniel. Deine Infos haben mir sehr schnell weitergeholfen und weitere lange Suchzeit erspart. Ich hatte auch das Problem, dass meine 2. Monitor, 42", 1920x1080, nach dem Update von Windows 8 auf 8.1 ungewohnt unscharf und die Menuschriften ungewohnt groß waren. Jetzt kenne ich den Grund und konnte ihn durch abschalten der Automatik beheben. Dank und Gruß. NersesAnonymous
December 04, 2013
Vielen Dank bin fast verrückt geworden -.- Haha Super Erklärung mit der Skalierung!!!!!!!!Anonymous
December 06, 2013
Super wissenswerter Eintrag, hab viel dazugelernt und direkt als Bookmark gespeichert!Anonymous
February 23, 2015
The comment has been removedAnonymous
June 05, 2015
Das PROBLEM ist Microsoft, anscheinend hat diese Bande noch immer nicht verstanden wie man richtig skaliert. Das Problem wird noch eine weile bestehen, vielleicht für immer ... facepalm ... dabei hatte MUI auf dem Amiga 1992 schon dies schon perfekt gemacht...Anonymous
June 25, 2015
Klasse Tipp!
Hatte mich schon Monate geärgert, dass einige Programme (besonders Open Office) auf meinem neuen PC so bescheiden dargestellt werden.