IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Dessin problème de compréhension (Graphics2D, BufferedImage, etc.)


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 16
    Par défaut Dessin problème de compréhension (Graphics2D, BufferedImage, etc.)
    Hello,

    Je suis en plein développement d'une application de dessin et j'ai quelques problèmes de conpréhension, je serais heureux si qqn pouvais m aider ou me donner un bon site. J'en ai trouvé plusieurs mais rien qui m'a convaincu...bref.

    J'ai une classe extends JPanel sur laquelle je veux dessiner. J'ai crée une bufferedImage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     public void paintComponent(Graphics g){
          // Appel de la méthode paintComponent de la classe mère, cette méthode redéfinit la zone de dessin et l'efface
          super.paintComponent(g);
          // Conversion en un contexte 2D
          Graphics2D g2 = (Graphics2D)g;
          //Initialisation de l'image bufferisée si elle n'existe pas encore
          if (bufImage == null){
             int w = getWidth();
             int h = getHeight();
             bufImage = (BufferedImage)createImage(w, h);
             Graphics2D gc = bufImage.createGraphics();
             gc.setColor(COULEUR_FOND);
             gc.fillRect(0, 0, w, h);
          }
          g2.drawImage(bufImage, null, 0, 0);
          dessiner(g2);
       }
     
       /** Méthode permettant de dessiner sur l'image bufferisée
        * 
        * @param g2 Graphics
        */
     
       public void dessiner(Graphics g2){
          g2.setColor(COULEUR_TRACE);
     
         switch (toolsActive){
             case Constantes.CRAYON:
               ...
                break;
             case Constantes.RECTANGLE:
     
                ...
                break;
             case Constantes.LIGNE:
     
     
     
          }
       }
    Ce que je comprend mal, c'est dans la méthode paintComponent() quand j'ai définit l'objet bufImage et que je l'ai appliquée au contexte de mon JPanel (g2.drawImage), ensuite l'envoie le contexte à la méthode dessiner()... A ce moment là lorsque je dessine, c'est sur l'image bufferisée ou sur le JPanel?

    Comment se fait-il que si je n'utilise pas d'image bufferisée je n'arrive pas à dessiner plusieurs formes successivement?

    Merci de m'aider...

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Si tu veux pouvoir dessiner plusieurs formes successivement, il faut que tu stockes des formes dans une liste et dans ta méthode paintComponent() ou dessiner(), tu dois parcourir ta liste et dessiner tous les éléments qu'elle contient...

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Et pour savoir sur qui tu dessines, c'est sur le JPanel.

    Les composants (et les images) ont une méthode getGraphics() qui leur renvoie un objet partique pour leur dessiner dessus. Celui qui est passé en paramètre des méthodes paint et paintComponent est le graphics qui permet de dessiner sur le composant.

    [EDIT] Je crois mieux comprendre ce que tu veux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Dessiner une image sur un composant :
    public void paintComponent(Graphics g) {
      g.drawImage(monImage, ...);
    }
     
    // Dessiner un composant sur une image :
    BufferedImage monImage = new BufferedImage(monComposant.getWidth(), monComposant.getHeight(), ...);
    Graphics imgGraphics = monImage.createGraphics();
    monComposant.paintComponent(imgGraphics);
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/01/2009, 13h41
  2. Réponses: 10
    Dernier message: 11/04/2007, 11h14
  3. [C#] Problème de compréhension de System.Convert ET Provider
    Par papouAlain dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/11/2004, 21h52
  4. onclipevent (problème de compréhension)
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo