Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
855 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java] dessiner une image ailleurs que dans paint()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] dessiner une image ailleurs que dans paint()

n°196399
Grand Aigl​e
Posté le 17-08-2002 à 17:53:00  profilanswer
 

salut , j'ai besoin d'afficher une image dans application ,j'y arrive sans probléme mais j'aimerais savoir si il n'y pas moyen d'eviter que ceci se passe dans la methode paint(Graphics g) ?
 
 
mon probleme etant que si fait une methode comme ceci :
 

Code :
  1. void toto(Graphics g)
  2. {
  3. ...
  4. }


 
 
il n'y pas moyen de l'appeler ailleurs que dans paint.
 
je suis pas tres clair mais c'est pas facile a expliquer  :pt1cable:  
 

mood
Publicité
Posté le 17-08-2002 à 17:53:00  profilanswer
 

n°196438
darklord
You're welcome
Posté le 17-08-2002 à 19:45:26  profilanswer
 

bin c quoi ton problème déjà ?


---------------
Just because you feel good does not make you right
n°196506
R3g
fonctionnaire certifié ITIL
Posté le 17-08-2002 à 23:44:02  profilanswer
 

Je sais pas si c'est ca ta question, mais tu peux recuperer un objet Graphics par toi meme, sans forcement utiliser celui passé à la méthode paint().

n°196530
Grand Aigl​e
Posté le 18-08-2002 à 10:43:42  profilanswer
 

R3g a écrit a écrit :

Je sais pas si c'est ca ta question, mais tu peux recuperer un objet Graphics par toi meme, sans forcement utiliser celui passé à la méthode paint().




 
oui c'est ça que je veux faire , la question est peut on afficher un objet graphique sans passer par la methode paint .
 
 
sinon je capte pas trop quel sont les types de composant sur lesquel l'image peux s'afficher , des panel ,des layout ?
 

n°196531
gm_superst​ar
Appelez-moi Super
Posté le 18-08-2002 à 11:08:13  profilanswer
 

Tu peux récupérer un object Graphics de ton composant en utilisant la méthode getGraphics() de JComponent ou Component.
 
Ensuite, on peut utiliser cet objet pour dessiner directement dans le composant. Cela dit, j'ai jamais essayé ;)

n°196532
Grand Aigl​e
Posté le 18-08-2002 à 11:14:43  profilanswer
 

gm_superstar a écrit a écrit :

Tu peux récupérer un object Graphics de ton composant en utilisant la méthode getGraphics() de JComponent ou Component.
 
Ensuite, on peut utiliser cet objet pour dessiner directement dans le composant. Cela dit, j'ai jamais essayé ;)




 
ça a l'air tres interessant ça , j'espére que ça va marcher , j'essai de créer une interface de jeux avec des photos , des boutons etc mais c'est  trop le bordel ...


Message édité par Grand Aigle le 18-08-2002 à 11:16:39
n°196600
Grand Aigl​e
Posté le 18-08-2002 à 18:51:48  profilanswer
 

si quelqu'un pouvait m'expliquer ou s'affiche exactement les images  car j'arrive pas a les manipuler a ma guise  
 
quand je fais :
 

Code :
  1. g.drawImage(toto,1, 1, this);


l'image s'affiche dans mon FlowLayout mais ensuite j'aimerais l'effacer et mettre mes boutons etc

n°196601
benou
Posté le 18-08-2002 à 18:57:45  profilanswer
 

Grand Aigle a écrit a écrit :

 
l'image s'affiche dans mon FlowLayout mais ensuite j'aimerais l'effacer et mettre mes boutons etc  




:??:
ce que tu veux faire, c'est carément modifier l'affichage qu'i y a dans ton layout ... pourquoi tu utilises pas plutot un autre panel ? tu affiches ton image dans un panel que tu mets dans ton flowlayout, puis quand tu veux remplacer l'image par tes boutons etc ... tu enlève le panel avec l'image et tu le remplaces avec un panel sans l'image et avec les boutons

n°196602
Grand Aigl​e
Posté le 18-08-2002 à 19:04:39  profilanswer
 

benou a écrit a écrit :

 
:??:
ce que tu veux faire, c'est carément modifier l'affichage qu'i y a dans ton layout ... pourquoi tu utilises pas plutot un autre panel ? tu affiches ton image dans un panel que tu mets dans ton flowlayout, puis quand tu veux remplacer l'image par tes boutons etc ... tu enlève le panel avec l'image et tu le remplaces avec un panel sans l'image et avec les boutons




 
 
ou j'aimerais bien faire ça , mais je suis pas sur que mon image puisse s'afficher dans un panel .
elle s'affiche dans le fond de la fentre de mon application j'ai aucune maitrise la dessus  :??:   :pt1cable:


Message édité par Grand Aigle le 18-08-2002 à 19:05:36
n°196608
gm_superst​ar
Appelez-moi Super
Posté le 18-08-2002 à 20:09:30  profilanswer
 

Grand Aigle a écrit a écrit :

ou j'aimerais bien faire ça , mais je suis pas sur que mon image puisse s'afficher dans un panel .
elle s'affiche dans le fond de la fentre de mon application j'ai aucune maitrise la dessus  :??:   :pt1cable:



Ben justement quand tu as écrit :

Citation :

Code :
  1. g.drawImage(toto,1, 1, this);



tu l'appelles à partir de quelle méthode ? Et 'this' représente quoi ?

mood
Publicité
Posté le 18-08-2002 à 20:09:30  profilanswer
 

n°196779
Grand Aigl​e
Posté le 19-08-2002 à 09:43:38  profilanswer
 

gm_superstar a écrit a écrit :

 
Ben justement quand tu as écrit :

Citation :

Code :
  1. g.drawImage(toto,1, 1, this);



tu l'appelles à partir de quelle méthode ? Et 'this' représente quoi ?




 
 :eek2: this ça represente le composant ou je dois l'afficher ?
 
je l'appel de la methode paint (Graphic g);


Message édité par Grand Aigle le 19-08-2002 à 09:44:39
n°196812
bobuse
Posté le 19-08-2002 à 10:48:53  profilanswer
 

Grand Aigle a écrit a écrit :

si quelqu'un pouvait m'expliquer ou s'affiche exactement les images  car j'arrive pas a les manipuler a ma guise  
 
quand je fais :
 

Code :
  1. g.drawImage(toto,1, 1, this);


l'image s'affiche dans mon FlowLayout mais ensuite j'aimerais l'effacer et mettre mes boutons etc  




Une technique pas mal utilisé est de sortir les images qui ne doivent pas être affichée de l'écran. C'est ce que j'utilise et c'est assez pratique, ça t'évite de gérer plein de panel ...

n°196818
bobuse
Posté le 19-08-2002 à 10:54:11  profilanswer
 

Si ça peut t'aider, voici une classe dont je me sers pour gérer le positionnement de mes images (désolé, j'ai pas eu le temps de mettre les commentaires) :
 

Code :
  1. import java.awt.*;
  2. import java.awt.image.*;
  3. import java.awt.geom.*;
  4. import javax.swing.*;
  5. public class ImageToDraw {
  6.     private Image image;
  7.     private Point2D.Double position;
  8.    
  9.    
  10.     private ImageToDraw(double x,double y) {
  11.         position=new Point2D.Double(x,y);
  12.     }
  13.     public ImageToDraw(String source,double x,double y) {
  14.         this(x,y);
  15.         image=Toolkit.getDefaultToolkit().createImage(source);
  16.     }
  17.     public ImageToDraw(Image image,double x,double y) {
  18.         this(x,y);
  19.         this.image=image;
  20.     }
  21.     public ImageToDraw(Image image) {
  22.         this(image,0f,0f);
  23.     }
  24.     public ImageToDraw(String source) {
  25.         this(source,0f,0f);
  26.     }
  27.    
  28.     public void setImage(Image image) {
  29.         this.image=image;
  30.     }
  31.     public Image getImage() {
  32.         return image;
  33.     }
  34.     public Point2D.Double getPosition() {
  35.         return position;
  36.     }
  37.     public double getX() {
  38.         return position.getX();
  39.     }
  40.     public double getY() {
  41.         return position.getY();
  42.     }
  43.     public int getWidth(ImageObserver o) {
  44.         return image.getWidth(o);
  45.     }
  46.     public int getHeight(ImageObserver o) {
  47.         return image.getHeight(o);
  48.     }
  49.    
  50.     public void setLocation(double x,double y) {
  51.         position.setLocation(x,y);
  52.     }
  53.     public void setX(double x) {
  54.         position.setLocation(x,position.getY());
  55.     }
  56.     public void setY(double y) {
  57.         position.setLocation(position.getX(),y);
  58.     }
  59.     public void translate(double xOff,double yOff) {
  60.         position.setLocation(position.getX()+xOff,position.getY()+yOff);
  61.     }
  62.    
  63.     // Place l'image en dehors du panel
  64.     public void hide(JPanel p) {
  65.         this.setLocation(p.getWidth()+10,p.getHeight()+10);
  66.     }
  67.    
  68.     public boolean drawImage(Graphics g,JPanel p) {
  69.         return g.drawImage(this.getImage(),(int)this.getX(),(int)this.getY(),p);
  70.     }
  71.     public boolean fitImage(Graphics g,JPanel p) {
  72.         return g.drawImage(this.getImage(),(int)this.getX(),(int)this.getY(),p.getWidth(),p.getHeight(),p);
  73.     }
  74. }


Message édité par bobuse le 19-08-2002 à 10:54:33
n°196820
Grand Aigl​e
Posté le 19-08-2002 à 10:57:22  profilanswer
 

merci je vais essayer de redefinir la methode drawImage comme tu le fait dans ta classe.
 
car la je fais des test et quand j'affiche une image dans un panel meme en enlevant ce panel l'image reste afficher .


Message édité par Grand Aigle le 19-08-2002 à 10:57:35
n°196833
El_gringo
Posté le 19-08-2002 à 11:05:39  profilanswer
 

bobuse, c propre ça : dessiner l'image en dehors du panel quand tu veux qu'elle disparaisse !?  
J'trouve pas trop... y a surement d'autres moyens (hé non, je connais pas ça)

n°196846
bobuse
Posté le 19-08-2002 à 11:19:29  profilanswer
 

El_Gringo a écrit a écrit :

bobuse, c propre ça : dessiner l'image en dehors du panel quand tu veux qu'elle disparaisse !?  
J'trouve pas trop... y a surement d'autres moyens (hé non, je connais pas ça)




C'est clair ! ;) Mais bon, après pas mal de tentatives, c'est ce que je trouve de plus efficaces ! Mais si quelqu'un a mieux, je suis preneur !

n°196864
Grand Aigl​e
Posté le 19-08-2002 à 11:28:33  profilanswer
 

merci vous m'avez bien aidé , ça fonctionne a peu pres !!!

n°197751
bobuse
Posté le 20-08-2002 à 10:22:16  profilanswer
 

Une autre solution que je vais peut-être adopter :
chacun de mes objets à afficher contient un flag(drawFlag) qui indique si il doit être dessiné ou pas. Grossomodo, ça donne ça :
 

Code :
  1. public class ObjectToDraw {
  2.     // ...
  3.     private boolean drawFlag;
  4.     public ObjectToDraw {
  5.         // initialement, l'objet n'est pas dessiné
  6.         drawFlag=false;
  7.     }
  8.     public void show() {
  9.         drawFlag=true;
  10.     }
  11.     public void hide() {
  12.         drawFlag=false;
  13.     }
  14.     public void draw(Graphics2D g) {
  15.         if (drawFlag) {
  16.             // on dessine l'objet sur le contexte fourni
  17.         }
  18.     }
  19. }


 
Qu'est-ce que vous en pensez ?
C'est vrai que ça fait un booléen par objet en plus, mais c'est peut-être plus propre :D

n°197754
bobuse
Posté le 20-08-2002 à 10:23:34  profilanswer
 

N.B. : La méthode draw est appelé dans le paint du composant ou tout est affiché.

n°197798
bobuse
Posté le 20-08-2002 à 11:08:43  profilanswer
 

finalement ça me plait bien cette technique ! :D  
Je sais pas si c'est plus propre que l'autre, mais en tout cas, c'est plus pratique et surtout plus générique.
En fait, si c'est plus propre, car quand un objet est positionné, c'est con d'effacer ses coordonnées pour le faire disparaître, parce que après, il faut se débrouiller pour les récupérer ...
 
lerci à El_Gringo pour m'avoir fait un peu réfléchir !

n°197805
El_gringo
Posté le 20-08-2002 à 11:14:02  profilanswer
 

Bah oui, c clair que c plus propre. Et aussi vachement plus logique. Au moins, qd l'image ne doit pas être dessinée, tu la dessines pas !

n°197830
bobuse
Posté le 20-08-2002 à 11:26:37  profilanswer
 

El_Gringo a écrit a écrit :

Bah oui, c clair que c plus propre. Et aussi vachement plus logique. Au moins, qd l'image ne doit pas être dessinée, tu la dessines pas !




!!bé oui, mais dans plusieurs doc., il disait que c'était vachement utilisé et tout ça ... mais bon, ils devaient pas être à jour, pasque c'est carément plus POO cette méthode !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java] dessiner une image ailleurs que dans paint()

 

Sujets relatifs
[CSS] Comment forcer une imprimante à imprimer une image ?[JAVA] convertir an bd acces97 en jds
[java] probleme de DateComment faire pour imprimer une image de l'applet(JAVA) sans plugin???
[JAVASCRIPT] empecher la recuperation d'une imageQuel est le meilleur éditeur pour Java, s.v.p. ?
[Java + WebObject] Suppression d'une ligne d'une bd (Resolu)[Java] ResultSet et Date (résolu)
[Java]classe abstraite pour un projet Bookmarks 
Plus de sujets relatifs à : [java] dessiner une image ailleurs que dans paint()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR