OVH Cloud OVH Cloud

A propos de Graphics

3 réponses
Avatar
trickyfox
Salut a tous!

J'ai un petit souci avec l'objet Graphics. Je dessine dans un Canvas
divers objet tel que des formes et des lignes avec la souris. Donc ma
methode paint(Graphics g) ne fait rien puisque tout est dessiner avec
la souris.

Puis j'ouvre une fenetre de dialogue (JOptionPane) ou une fenetre
classique et je la promene sur mon canvas. Et la je constate que la
fenetre agit comme une gomme et efface une grande partie de ce que
j'ai dessine a la souris.

Alors comment faire pour que le dessin que j'ai dessine a la souris
reste intact? Je ne veux pas a chaque fois redessiner tout le canvas,
il y a possibilite de "verrouiller" un objet Graphics??

Merci d'avance pour votre aide.

3 réponses

Avatar
arN
wrote:

Salut a tous!

J'ai un petit souci avec l'objet Graphics. Je dessine dans un Canvas
divers objet tel que des formes et des lignes avec la souris. Donc ma
methode paint(Graphics g) ne fait rien puisque tout est dessiner avec
la souris.

Puis j'ouvre une fenetre de dialogue (JOptionPane) ou une fenetre
classique et je la promene sur mon canvas. Et la je constate que la
fenetre agit comme une gomme et efface une grande partie de ce que
j'ai dessine a la souris.

Alors comment faire pour que le dessin que j'ai dessine a la souris
reste intact? Je ne veux pas a chaque fois redessiner tout le canvas,
il y a possibilite de "verrouiller" un objet Graphics??

Merci d'avance pour votre aide.


simple idée, non testée : la fenêtre en se déplaçant sur ton Canvas doit
appeler la méthode repaint() du Canvas, donc si tu redéfinis la méthode
repaint pour ne rien faire ... (à voir ensuite si tu n'as pas d'autres
problèmes d'affichage qui en découlent)

Sinon, tu peux aussi faire une capture de l'écran au niveau de ton canvas et
insérer un "redessinage" de cette capture en fin de méthode repaint.

A essayer

--
Arnaud

Avatar
Jean-Philippe Martin
a écrit dans le message de
news:
Salut a tous!

J'ai un petit souci avec l'objet Graphics. Je dessine dans un Canvas
divers objet tel que des formes et des lignes avec la souris. Donc ma
methode paint(Graphics g) ne fait rien puisque tout est dessiner avec
la souris.

Puis j'ouvre une fenetre de dialogue (JOptionPane) ou une fenetre
classique et je la promene sur mon canvas. Et la je constate que la
fenetre agit comme une gomme et efface une grande partie de ce que
j'ai dessine a la souris.

Alors comment faire pour que le dessin que j'ai dessine a la souris
reste intact? Je ne veux pas a chaque fois redessiner tout le canvas,
il y a possibilite de "verrouiller" un objet Graphics??

Merci d'avance pour votre aide.


Moi je dessinerais sur un Graphics apart et je redirigerai ma méthode
paint() pour qu'elle dessine le contenu de mon Graphic.

A essayer aussi ;o)

Aucun de nous deux ne répond a ta question du "verrouillage" désolé.

Avatar
Black Myst
wrote:
Salut a tous!

J'ai un petit souci avec l'objet Graphics. Je dessine dans un Canvas
divers objet tel que des formes et des lignes avec la souris. Donc ma
methode paint(Graphics g) ne fait rien puisque tout est dessiner avec
la souris.

Puis j'ouvre une fenetre de dialogue (JOptionPane) ou une fenetre
classique et je la promene sur mon canvas. Et la je constate que la
fenetre agit comme une gomme et efface une grande partie de ce que
j'ai dessine a la souris.

Alors comment faire pour que le dessin que j'ai dessine a la souris
reste intact? Je ne veux pas a chaque fois redessiner tout le canvas,
il y a possibilite de "verrouiller" un objet Graphics??

Merci d'avance pour votre aide.


Non, on peut pas verouiller un object Graphics.

La méthode paint doit IMPERATIVEMENT dessiner l'integralité du
composant, lorsque la fenetre, meme d'une autre application passe
au dessus de ton composant, elle ecrit exactement au même endrois
que toi avec un acces au graphics

La bonne solution c'est de dessiner dans une image, et d'afficer l'image
dans la méthode paint.

paint ( graphics g ) {
if( monImage==null ) {
monImage = createImage(getWidth(),getHeight());
}
g.drawImage(monImage,...);
}

Et tu dessine dans ton image avec un repaint() apres chaque modification
de l'image!

amuse toi bien
Black Myst