Graphics

Résolu
Signaler
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
-
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
-
Bonjour à tous.
Comment est ce que l'on peut combiner deux Graphics .. ? C'est-à-dire que j'ai un Graphics A et un Graphics B et que j'aimerai faire en sorte de les regrouper dans un seul et même Graphics (par exemple C).
J'ai envisagé plusiseurs solutions :  
   - convertir les Graphics en Image (mais j'ai pas trouvé comment .. :s ) puis les combiner avec l'aide de BufferedImage.
   - les convertir directement en Buferedimage (mais j'ai pas non plus trouvé comment .. u_u ) puis les combiner avec l'aide d'un autre BufferedImage.
   - recopier directement un des Graphics dans l'autre (mais j'ai pas trouvé de méthodes comprable à Graphics#drawXX(Graphics g) )

merci ..

4 réponses

Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
package demo;
/*
 * GraphicsDemo.java
 */

import java.awt.*;
import javax.swing.*;

public class GraphicsDemo extends javax.swing.JFrame {

    private Graphics1 graphics1;
    private Graphics2 graphics2;

    public GraphicsDemo() {
        super("GraphicsDemo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new GridLayout());
        setSize(600, 300);
        setLocationRelativeTo(null);
        graphics1 = new Graphics1();
        add(graphics1);
        graphics2 = new Graphics2();
        add(graphics2);
        add(new Graphics12());
    }

    public static void main(final String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                new GraphicsDemo().setVisible(true);
            }
        });
    }

    class Graphics12 extends JComponent {

        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            graphics1.paintComponent(g);
            graphics2.paintComponent(g);
        }
    }

    class Graphics1 extends JComponent {

        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            g.drawOval(10, 100, 150, 100);
            g.drawRect(10, 100, 150, 100);
            g.drawString("1", 70, 150);
        }
    }

    class Graphics2 extends JComponent {

        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.RED);
            g.drawOval(35, 75, 100, 150);
            g.drawRect(35, 75, 100, 150);
            g.drawString("2", 90, 150);
        }
    }
}
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
> indiquer le Graphics à dessiner sur chaque composants

C'est impossible. Il faut dessiner sur le Graphics qui est envoyé par le système dans la méthode "paintComponent(Graphics g)"
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
2
Slt. (excuse moi pour le retard de réponse.. )
Merci pour le code. Apparemment tu dessines les graphics dans un composant pour ensuite récupérer le graphcics final. Ca marche impec !  :o) Cependant, j'ai essayé de le modifer afin d'indiquer le Graphics à dessiner sur chaque composants, mais ca ne fonctionne pas. Est ce que tu pourrais me donner un petit coup de main .. ?

merci.
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
2
HAAaaa.. d'accord .. :(
merci pour ta réponse. Je vais voir ce que je peux faire ..