Graphismes avec Java FX

Dessin du cadran (1)

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.
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){ 
}

Tracé de l'image de fond

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.
Elle la dessine avec comme largeur largeur et comme hauteur hauteur, c'est à dire pour qu'elle remplisse le 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.

 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé