Extrait du cours programmation graphique avancée et animations
le Graphics
Lors de la réception d’un événement expose, un objet Graphics est crée par le « moteur Java ». Cet objet contient et décrit tout ce qu’il faut avoir pour pouvoir dessiner (« boites de crayons de couleurs », les divers « pots de peinture », les valises de polices de caractères, les règles, compas pour dessiner des droites et cercles, …) ainsi que la toile de dessin sur laquelle on va dessiner. Cette toile correspond à la partie qui était masquée et qui doit être redessinée.
Les méthodes graphiques
repaint(), up date(Graphics g),paint(Graphics g) repaint()est une méthode (qu’il ne faut jamais redéfinir) « système Java » gérée par « la thread AWT » qui appelle, dès que cela est possible, la méthode update(Graphics g) qui appelle ensuite paint(Graphics g).
up date(Graphics g)efface le composant (le redessine avec sa couleur de fond), puis appelle paint(Graphics g).
Le moteur d’une animation
On ne relance pas dans paint()un appel à repaint()car cela aurait pour conséquence de saturer la thread AWT. D’ailleurs le code de paint()doit être un code qui est exécuté rapidement.La technique consiste alors à créer une thread d’animation (donc distincte de « la thread système AWT ») qui elle, lancera les repaint(). Par exemple pour une applet on a un squelette de code comme :
public
class trameAnimApplet extends java.applet.Applet implements
Runnable {
int frame;
int delay;
Thread animator;
/**
* methode appelée lorsque l’applet devient visible à l’écran.
* Crée une thread et la lance.
*/
public void start() {
animator = new Thread(this);
animator.start();
}
Les Animations
On considère l’applet :
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
public class ColorSwirl extends
java.applet.Applet implements Runnable {
Font f = new
Font(« TimesRoman »,Font.BOLD,48);
Color colors[] = new Color[50];
Thread runThread;
public void start() {
if (runThread == null) {
runThread = new Thread(this);
runThread.start();
}
}
public void stop() {
if (runThread != null) {
runThread.stop();
runThread = null;
}
}
Résultat du programme
remarques
– C’est un programme qui passe en revue les gammes de couleurs de manière continue
– Une telle animation même si elle fonctionne fait apparaître des tremblements. Ceci est du à la gestion du rafraîchissement en Java et plus précisément à l’effacement dans la méthode update().
………..
Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours Java: Programmation graphique avancée et animations (271 KO) (Cours PDF)