Bonjour, est-ce qu'il est possible de centrer une BackgroundImage sur un pixel entier
A priori on ne peut pas mais je pose la question des fois que...
Par exemple avec ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Rectangle r1 = new Rectangle(1, 1); Rectangle r2 = new Rectangle(2, 0, 1, 1); Shape t = Shape.union(r1, r2); // 3x1 pixels WritableImage i = t.snapshot(new SnapshotParameters(), null); BackgroundImage b = new BackgroundImage(i, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, BackgroundSize.DEFAULT); StackPane r = new StackPane(); r.setBackground(new Background(null, List.of(b))); Stage s = new Stage(); s.setScene(new Scene(r, 300, 150)); s.show();
Le résultat est flou parce que (300-3)/2 = 148.5, avec un stage de 301 pixels ou un positionnement absolu ça fonctionne.
Le snapToPixel du StackPane n'a pas d'influence sur l'arrière-plan.
C'est dommage quand même, les sous-pixels on ne s'en sert jamais, et la valeur par défaut de snapToPixel est true donc pourquoi ce n'est pas pareil avec l'arrière-plan ? C'est l'usage le plus évident.
Partager