Kann man High DPI simulieren?
Kann man High DPI simulieren?
In letzter Zeit wird häufiger das Problemfeld High DPI erwähnt.
Braucht man zwingend einen physischen Bildschirm um Anwendungen/Layouts in diesem Modus zu testen, oder gibt es einen Trick?
Einfach nur um die Verhältnisse wie Fontgrössen etc. zu überprüfen, es müsste ja nicht wirklich "bedienbar" sein.
Ich möchte mir eigentlich keinen neuen Bildschirm kaufen, aber trotzdem meine Anwendungen möglichst kompatibel machen.
Ich finde es immer schwierig und unbefriedigend, Probleme zu lösen, die man nicht hat/sieht.
Braucht man zwingend einen physischen Bildschirm um Anwendungen/Layouts in diesem Modus zu testen, oder gibt es einen Trick?
Einfach nur um die Verhältnisse wie Fontgrössen etc. zu überprüfen, es müsste ja nicht wirklich "bedienbar" sein.
Ich möchte mir eigentlich keinen neuen Bildschirm kaufen, aber trotzdem meine Anwendungen möglichst kompatibel machen.
Ich finde es immer schwierig und unbefriedigend, Probleme zu lösen, die man nicht hat/sieht.
- Ally
- Beiträge: 255
- Registriert: Do 11. Jun 2009, 09:25
- OS, Lazarus, FPC: Win und Lazarus Stable release
- CPU-Target: x64
Re: Kann man High DPI simulieren?
Unter Windows 11:
Start - Einstellungen - System - Bilschirm - Skalierung
steht normalerweise auf 100% - wenn man das auf, z.B. 150%, umstellt kann man schon mal sehen ob alles passt.
Start - Einstellungen - System - Bilschirm - Skalierung
steht normalerweise auf 100% - wenn man das auf, z.B. 150%, umstellt kann man schon mal sehen ob alles passt.
Re: Kann man High DPI simulieren?
OK, Danke!
Das schaue ich mir später mal an.
Das schaue ich mir später mal an.
Re: Kann man High DPI simulieren?
Ich habe mehrere Virtuelle Maschinen auf dem PC, darunter auch eine mit Windows 7/150% (144ppi). Und da mir das Laden der VM unter VirtualBox manchmal zu lange dauert, habe ich auf meiner normalen Arbeitsumgebung (WIn-11) einen zweiten User mit 144ppi eingerichtet. Die Umschaltung geht aber auch nicht ganz ideal, weil man sich jeweils als der andere User einloggen muss. Auf der laufenden Arbeitsumgebung die Auflösung umzustellen ist, wenn ich mich recht erinnere, nicht ratsam, weil das die Icon-Anordnung auf dem Desktop durcheinanderbringt.
Ein zweiter Monitor hätte den Vorteil, dass man testen kann, ob sich die Skalierung richtig anpasst, wenn man das Formular auf den anderen Monitor mit anderer Auflösung zieht.
In OpenSUSE habe ich eben einen Regler für "Globale Skalierung" gesehen. Bin nicht sicher, ob das dasselbe ist wie die LCL-Skalierung, die von der IDE unterstützt wird. LCL-Skalierung meint die Anpassung der Längendimensionen, wenn sich die Pixeldichte ändert, also die Anzahl der horizontalen und vertikalen Pixel des Monitors. Unter Windows gibt es noch eine andere Art von Skalierung (irgendwo unter Barrierefreiheit > Textgröße) - da werden die Textgrößen und Control-Größen mit dem Faktor multipliziert, aber nicht unbedingt ihre Positionen, und Icons bleiben auch außen vor. Das wird mit LCLScaling nicht behandelt, und man kann (bis auf die Icons) kompatible Anwendungen nur so erstellen, dass man die Controls aneinander verankert. Von welchem Typ die "Globale Skalierung von OpenSUSE ist, weiß ich nicht.
Ein zweiter Monitor hätte den Vorteil, dass man testen kann, ob sich die Skalierung richtig anpasst, wenn man das Formular auf den anderen Monitor mit anderer Auflösung zieht.
In OpenSUSE habe ich eben einen Regler für "Globale Skalierung" gesehen. Bin nicht sicher, ob das dasselbe ist wie die LCL-Skalierung, die von der IDE unterstützt wird. LCL-Skalierung meint die Anpassung der Längendimensionen, wenn sich die Pixeldichte ändert, also die Anzahl der horizontalen und vertikalen Pixel des Monitors. Unter Windows gibt es noch eine andere Art von Skalierung (irgendwo unter Barrierefreiheit > Textgröße) - da werden die Textgrößen und Control-Größen mit dem Faktor multipliziert, aber nicht unbedingt ihre Positionen, und Icons bleiben auch außen vor. Das wird mit LCLScaling nicht behandelt, und man kann (bis auf die Icons) kompatible Anwendungen nur so erstellen, dass man die Controls aneinander verankert. Von welchem Typ die "Globale Skalierung von OpenSUSE ist, weiß ich nicht.
Re: Kann man High DPI simulieren?
VBox ist schon mal eine gute Idee. Ich hab ja noch ein Tubleweed parat.
Auch VBox bietet einen "Virtuellen Monitor".
Ich werde später noch schauen, was das genau macht. Muss noch kurz weg.
Auch VBox bietet einen "Virtuellen Monitor".
Ich werde später noch schauen, was das genau macht. Muss noch kurz weg.
- Dateianhänge
-
- vboxvirt.png (112.63 KiB) 383 mal betrachtet
- Ally
- Beiträge: 255
- Registriert: Do 11. Jun 2009, 09:25
- OS, Lazarus, FPC: Win und Lazarus Stable release
- CPU-Target: x64
Re: Kann man High DPI simulieren?
Hallo wp_xyz,
Ich habe deshalb immer meinen Laptop angeworfen, der hat eine höhere Auflösung.
Bevor ich Theo geantwortet habe, habe ich das Ganze noch mal getestet und siehe da - die Icons auf dem Desktop werden beim Zurückstellen auf 100% wieder richtig angeordnet.
Wie lange das schon so ist kann ich nicht sagen. Aktuell habe ich Windows 11 Version 23H2.
Ja, genau. Jetzt wo du es sagst, erinnere ich mich auch dunkel daran.Auf der laufenden Arbeitsumgebung die Auflösung umzustellen ist, wenn ich mich recht erinnere, nicht ratsam, weil das die Icon-Anordnung auf dem Desktop durcheinanderbringt.
Ich habe deshalb immer meinen Laptop angeworfen, der hat eine höhere Auflösung.
Bevor ich Theo geantwortet habe, habe ich das Ganze noch mal getestet und siehe da - die Icons auf dem Desktop werden beim Zurückstellen auf 100% wieder richtig angeordnet.
Wie lange das schon so ist kann ich nicht sagen. Aktuell habe ich Windows 11 Version 23H2.
Re: Kann man High DPI simulieren?
Jetzt verwende ich VirtualBox schon so lang, und das habe ich noch nie gesehen... Aber dennoch: Ich denke, das ist nicht das richtige, denn wenn man das anwendet, wird alles zwar vergrößert, abert etwas unscharf. Beim "echten" LCL-Skaling wird aber alles in der neuen Auflösung neu gezeichnet.
Ich habe dann unter OpenSUSE auch "Einstellungen" > "Systemeinstellungen" > "Hardware" > "Anzeige und Monitor" > "globale Skalierung" den Wert von 100 auf 150% hochgesetzt und eine kleines Laz-Programm kompiliert. Wenn ich dann die Auflösung wieder auf 100% zurückstelle, sieht das Formular richtig aus, wenn LCLScaling in den Projekt-Settings markiert ist, jedoch falsch, wenn LCLScaling nicht markiert ist.
Aber Achtung: Beide Möglichkeiten haben bei mir die Fenster-Anordnung der floatenden IDE zerschossen.
Ich habe dann unter OpenSUSE auch "Einstellungen" > "Systemeinstellungen" > "Hardware" > "Anzeige und Monitor" > "globale Skalierung" den Wert von 100 auf 150% hochgesetzt und eine kleines Laz-Programm kompiliert. Wenn ich dann die Auflösung wieder auf 100% zurückstelle, sieht das Formular richtig aus, wenn LCLScaling in den Projekt-Settings markiert ist, jedoch falsch, wenn LCLScaling nicht markiert ist.
Aber Achtung: Beide Möglichkeiten haben bei mir die Fenster-Anordnung der floatenden IDE zerschossen.
Re: Kann man High DPI simulieren?
OK, Habe mal das mit den KDE Einstellungen probiert (150%).
Lustig ist schon mal, dass nur neu gestartete Anwendungen betroffen sind.
Das könnte man als Bug sehen, ist aber im Moment eigentlich ganz praktisch.
Der Desktop bleibt normal und Lazarus wird zum Monster (Bild 2).
Dann habe ich mal im 150% Modus einen kleinen Test gemacht.
Einmal mit und einmal ohne LCLScaling kompiliert.
Dann die beiden Exes im 100% Modus gestartet und ja, da ist ein Unterschied (Bild1)
Oben mit Scaling und unten ohne.
Es ist schon mal gut, dass es was tut.
Nur... was lerne ich jetzt daraus? LCLScaling einschalten reicht?
Lustig ist schon mal, dass nur neu gestartete Anwendungen betroffen sind.
Das könnte man als Bug sehen, ist aber im Moment eigentlich ganz praktisch.
Der Desktop bleibt normal und Lazarus wird zum Monster (Bild 2).
Dann habe ich mal im 150% Modus einen kleinen Test gemacht.
Einmal mit und einmal ohne LCLScaling kompiliert.
Dann die beiden Exes im 100% Modus gestartet und ja, da ist ein Unterschied (Bild1)
Oben mit Scaling und unten ohne.
Es ist schon mal gut, dass es was tut.
Nur... was lerne ich jetzt daraus? LCLScaling einschalten reicht?
- Dateianhänge
-
- LCLScaling.png (33.92 KiB) 358 mal betrachtet
-
- KDE150.png (132.78 KiB) 358 mal betrachtet
Re: Kann man High DPI simulieren?
Ja. Nur wenn du eigene Komponenten schreibst, musst du dafür sorgen, dass die "inneren" Dimensionen (Abstände, Ränder, ...) skaliert werden. Ansonsten, auf der Anwendungsebene reicht es, gar nichts zu tun, denn LCLScaling ist standarmäßig aktiv, d.h. LCL macht alles automatisch. (Es sei denn, du verwendest Komponenten, die nicht LCLScaling nicht kennen).
Re: Kann man High DPI simulieren?
OK! Danke!
Gut, dass man für das grundsätzliche Phänomen nicht unbedingt einen anderen Monitor benötigt.
Für die letzte Sicherheit (Icon Grössen/Auflösungen etc.) aber wahrscheinlich doch?
Gut, dass man für das grundsätzliche Phänomen nicht unbedingt einen anderen Monitor benötigt.
Für die letzte Sicherheit (Icon Grössen/Auflösungen etc.) aber wahrscheinlich doch?
Re: Kann man High DPI simulieren?
Ich hab keinen. Besser wär's natürlich schon, und dann bräuchte ich noch - statt virtueller Maschinen - einen Mac und Notebooks mit diversen Linuxen, und überhaupt bräuchte ich dann noch eine größere Wohnung...
Re: Kann man High DPI simulieren?

Es müssen noch nicht mal verschiedene Linuxe sein. GTK2 vs Qt5 vs Qt6 gibt schon ausreichend zu kontrollieren.
"Kästchen" (TEdit, TCombobox, TEtc.) sehen vom einem zum anderen System manchmal schon unterschiedlich hoch aus, bzw. haben keine gemeinsame Grundlinie mehr.
Im Prinzip müsste man die alle verknüpfen (Höhe, Grundlinie).
- Ally
- Beiträge: 255
- Registriert: Do 11. Jun 2009, 09:25
- OS, Lazarus, FPC: Win und Lazarus Stable release
- CPU-Target: x64
Re: Kann man High DPI simulieren?
Hallo wp_xyz,
Wenn ich direkt unter Windows, so wie oben beschrieben, die Auflösung ändere, wird zwar alles größer aber nicht unscharf.
Das LCL-Scaling funktioniert wie es soll und aus der Imagelist werden die passenden Icons verwendet.
Natürlich wird alles zu groß dargestellt, aber die Proportionen stimmen.
Mit dem Testprogramm kann man die Einstellungen 100%, 125%, 150%, 175% und 200% überprüfen.
Viele Grüße Roland
verstehe ich da jetzt etwas falsch oder hat das etwas mit VirtualBox zu tun?Jetzt verwende ich VirtualBox schon so lang, und das habe ich noch nie gesehen... Aber dennoch: Ich denke, das ist nicht das richtige, denn wenn man das anwendet, wird alles zwar vergrößert, aber etwas unscharf. Beim "echten" LCL-Skaling wird aber alles in der neuen Auflösung neu gezeichnet.
Wenn ich direkt unter Windows, so wie oben beschrieben, die Auflösung ändere, wird zwar alles größer aber nicht unscharf.
Das LCL-Scaling funktioniert wie es soll und aus der Imagelist werden die passenden Icons verwendet.
Natürlich wird alles zu groß dargestellt, aber die Proportionen stimmen.
Mit dem Testprogramm kann man die Einstellungen 100%, 125%, 150%, 175% und 200% überprüfen.
Viele Grüße Roland
- Dateianhänge
-
ResolutionTest.zip
- (25.13 KiB) 14-mal heruntergeladen
Re: Kann man High DPI simulieren?
Danke für das Beispiel! Funktioniert.
Kannst du noch kurz erklären, wie der Zusammenhang zwischen PPI (Ist DPI nicht eigentlich für den Druck?) und Bildgrösse ist?
Also dein kleinstes Bild ist 20x20px. Könnte es auch 16x16px sein?
Wie entscheidet Lazarus, welche Grösse bei welchen DPI genommen wird?
-
- Beiträge: 5944
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunc)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Kann man High DPI simulieren?
DPI sind Pixel pro Zoll.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot