JavaFX und HiDPI

Dieser Artikel ist der dritte Tag von JavaFX Adventskalender 2017. Der zweite Tag ist HASUNUMA Kenjis Einfache JavaFX-Programmierung mit afterburner.fx (1).

Ein kurzer Hinweis zum aktuellen Status und den Einstellungen von JavaFX HiDPI.

Die Standardanzeige ist 96 DPI (Punkte pro Zoll: 96 DPI sind 96 Pixel pro Zoll) und die Größe eines Pixels beträgt 0,264 mm. Andererseits beträgt für eine Anzeige mit ultrahoher Auflösung, beispielsweise im Fall von 13,3 Zoll und 2560 x 1440 Pixel, die Größe eines Pixels 0,11 mm bei 220 DPI.

Ein 12-Pixel-Zeichen hätte auf einem Standarddisplay eine Größe von 3,2 mm, auf einem Display mit ultrahoher Auflösung jedoch eine Größe von 1,4 mm.

Die Größe der Anzeige auf einem Bildschirm mit ultrahoher Auflösung wird auf einem Standarddisplay auf weniger als die Hälfte reduziert, was unpraktisch ist. Um dieses Problem zu umgehen, erhöht die Betriebssystemfunktion die Größe der auf dem Bildschirm angezeigten Elemente. Unter Windows 10 können Sie in den Anzeigeeinstellungen "Größe von Text, Apps und anderen Elementen ändern" in 150%, 175%, 200% usw. ändern.

In JavaFX wird in der neuesten Version von JDK 8, JDK 9, in der Windows-Umgebung die Anzeigegröße basierend auf dem Vergrößerungsverhältnis dieser Änderung der Anzeigegröße geändert.

Wenn Sie beispielsweise einen Bildschirm mit einer Voreinstellungsbreite und Voreinstellungshöhe von Anchor Pane auf 320 und 200 und einer Schriftgröße von 12 Pixel auf einem Display mit ultrahoher Auflösung anzeigen, wird er entsprechend dem Wert der Größenänderung in den Betriebssystemeinstellungen vergrößert. Es zeigt.

Um diese Vergrößerung zu unterdrücken und die JavaFX-Pixeleinstellungen an die physische Auflösung der Originalanzeige anzupassen, setzen Sie die Systemeigenschaft prism.allowhidpi auf false.

Die Bildschirmgrößen, wenn die Systemeigenschaft prism.allowhidpi auf true (Standard) und false festgelegt ist, werden unten angezeigt.

image.png

Die Größe der Grafikanzeige mit geänderter Systemeigenschaft prism.allowhidpi wird nebeneinander angezeigt.

image.png

Holen Sie sich den DPI-Wert mit getDpi ()

JavaFX bietet eine API, um den DPI-Wert der Anzeige abzurufen. Die getDpi () -Methode der Klasse javafx.stage.Screen.

Das folgende Beispiel zeigt das Ergebnis des Abrufs des DPI-Werts mithilfe dieser API in einer Umgebung, in der die Größe der Anzeige des Windows-Betriebssystems auf einer Anzeige mit einer Auflösung von 2560 x 1440 bei 13,3 Zoll auf 150% festgelegt ist.

Ändern Sie die Größe der Anzeigeeinstellungen des Betriebssystems prism.Wert von allowhidpi getDpi()Ergebnis von
150% true 147.0
150% false 221.0

Recommended Posts

JavaFX und HiDPI
JavaFX-Schaltflächen und Beschriftungen
Hallo Welt mit Kotlin und JavaFX
Ziehen Sie Dateien mit JavaFX per Drag & Drop
== und gleich
Vergrößern / verkleinern und parallel zu JavaFX Canvas verschieben (Revenge Edition)
JavaFx-Memorandum
Memo beim Tappen und Entwickeln mit JavaFX
Ich habe versucht, JavaFX und Spring Framework zu verknüpfen.
Ein einfaches Stein-Papier-Scheren-Spiel mit JavaFX und SceneBuilder