JavaFX et HiDPI

Cet article est le troisième jour du Calendrier de l'Avent JavaFX 2017. Le deuxième jour est la [Programmation JavaFX facile avec afterburner.fx (1)] de HASUNUMA Kenji (http://www.coppermine.jp/docs/notepad/2017/12/afterburnerfx-1.html).

Une brève note sur l'état actuel et les paramètres de JavaFX HiDPI.

L'affichage standard est de 96 ppp (points par pouce: 96 ppp est de 96 pixels par pouce) et la taille d'un pixel est de 0,264 mm. En revanche, pour un écran ultra haute résolution, par exemple, dans le cas de 13,3 pouces et 2560 x 1440 pixels, la taille d'un pixel est de 0,11 mm à 220 DPI.

Un caractère de 12 pixels mesure 3,2 mm sur un écran standard, mais 1,4 mm sur un écran ultra-haute résolution.

Sur un écran à ultra haute résolution, la taille de ce qui est affiché à l'écran est réduite à moins de la moitié sur un écran standard, ce qui n'est pas pratique. Pour contourner ce problème, la fonction OS augmentera la taille de ce qui est affiché à l'écran. Pour le système d'exploitation Windows 10, vous pouvez modifier «Redimensionner le texte, les applications et autres éléments» en 150%, 175%, 200%, etc. dans les paramètres d'affichage.

Dans JavaFX, dans la dernière version de JDK 8, JDK 9, dans l'environnement Windows, la taille d'affichage est modifiée en fonction du taux d'agrandissement de ce changement de taille d'affichage.

Par exemple, si vous affichez un écran avec Pref Width et Pref Height d'AnchorPane réglés sur 320 et 200 et la taille de police réglée sur 12px sur un affichage ultra-haute résolution, il sera agrandi en fonction de la valeur de redimensionnement dans les paramètres du système d'exploitation. Ça montre.

Pour supprimer cette mise à l'échelle et faire correspondre les paramètres de pixel JavaFX à la résolution physique de l'affichage d'origine, définissez la propriété système prism.allowhidpi sur false.

La taille de l'écran lorsque la propriété système prism.allowhidpi est définie sur true (par défaut) et false est indiquée ci-dessous.

image.png

La taille de l'affichage graphique avec la propriété système prism.allowhidpi définie est affichée côte à côte.

image.png

Obtenir la valeur DPI par getDpi ()

JavaFX fournit une API pour obtenir la valeur DPI de l'affichage. La méthode getDpi () de la classe javafx.stage.Screen.

Voici un exemple du résultat de l'obtention de la valeur DPI à l'aide de cette API dans un environnement où le redimensionnement de l'affichage du système d'exploitation Windows est défini sur 150% sur un écran avec une résolution de 2560x1440 à 13,3 pouces.

Redimensionner la valeur des paramètres d'affichage du système d'exploitation prism.valeur de allowhidpi getDpi()Résultat de
150% true 147.0
150% false 221.0

Recommended Posts

JavaFX et HiDPI
Boutons et étiquettes JavaFX
Bonjour tout le monde avec Kotlin et JavaFX
Faites glisser et déposez des fichiers avec JavaFX
== et égal
Agrandir / réduire et mouvement parallèle avec JavaFX Canvas (Revenge)
Mémorandum JavaFx
Mémo lors du tâtonnement et du développement à l'aide de JavaFX
J'ai essayé de lier JavaFX et Spring Framework.
Un simple jeu de ciseaux-papier-pierre avec JavaFX et SceneBuilder