Comme il faut prévoir d'avoir à redessiner régulièrement le cadran pour déplacer l'aiguille, ce code va être inclus dans une méthode, qu'il suffira d'appeler chaque fois que l'on devra rafraîchir l'affichage pour changer la position de l'aiguille.
Comme la position de l'aiguille est amenée à changer, il est logique d'en faire un paramètre de la méthode qui dessine l'aiguille.
Nous allons appeler "inclinaison" ce paramètre, qui désignera l'angle que fait l'aiguille avec la position origine.
Dans la classe EchantillonController, au dessus de la méthode initialize, on ajoute donc l'en-tête de méthode suivant
private void traceCadran(double inclinaison){ }
Suivre la procédure vue précédemment pour créer un paquet Images dans le projet et y importer l'image "Desert.jpg" trouvée dans "Images publiques".
Ajouter à la classe EchantillonController, à la suite des déclarations de variable, la déclaration d'Image :
Image decor=new Image("images/Desert.jpg");et l'importation correspondante.
Ajouter dans la méthode traceCadran le code
gc.drawImage(decor,-largeur/2,-hauteur/2,largeur,hauteur);Cette ligne dessine l'image appelée decor de sorte que son coin supérieur gauche soit au point de coordonnées -largeur/2,-hauteur/2, c'est à dire pour nous dans le coin supérieur gauche du canevas.
Pour voir le résultat, il faut maintenant ajouter, dans la méthode initialize, un appel de la méthode traceCadran, avec par exemple le paramètre 0. La classe EchantillonController doit maintenant contenir :
package application; import javafx.fxml.FXML; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; public class EchantillonController { @FXML Canvas fond; GraphicsContext gc; double largeur; double hauteur; double rayon; double lAiguille; Image decor=new Image("images/Desert.jpg"); private void traceCadran(double inclinaison){ gc.drawImage(decor,-largeur/2,-hauteur/2,largeur,hauteur); } @FXML void initialize(){ gc=fond.getGraphicsContext2D(); largeur=fond.getWidth(); hauteur=fond.getHeight(); rayon=largeur/2.5; lAiguille=rayon*4/5; gc.translate(largeur/2,hauteur/2); traceCadran(0); } }et l'exécution du programme permet d'obtenir une fenêtre carrée contenant l'image.