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 :

[Debutant] Probleme ente 2 types: Graphics / Component


Sujet :

2D Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Debutant] Probleme ente 2 types: Graphics / Component
    bonjour je dois realiser un programme en java permetant de faire une acquisition video au moyen d'une webcam et de superposer sur cette image diferents textes et formes(carrés, triangle, ligne...) qui evoluent au cours du temps afin de realiser une espece de HUD avec la ligne d'horizon, l'altitude et d'autres informations complementaires.

    grace au petit programme ci dessous, j'arrive a faire l'acquisition video dont le type est component (nom de la variable: comp)
    et je veut y supperposer ma methode g de type graphics (pour faire les premiers essais ce sont des textes qui n'evoluent pas dans le temps que j'ai decidé de faire afficher afin de rendreles choses plus claires)

    je precise aussi que l'affichage de l'acquisition video et de la methode de dessin fonctionnent tres bien separement seulent quand je veut supperposer les 2 je ne vois que ce qui provient de ma camera et pas de mon dessin.

    le probleme viendrait il du fait que ce n'est pas les memes type (component / graphics ) ou serais ce ma video qui serais affiché devant les dessins??? ou peut etre bien les 2

    je vous remercie d'avance pour vos reponses.

    ci dessous voici mon code

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.FileOutputStream;
     
    import javax.media.CaptureDeviceInfo;
    import javax.media.Manager;
    import javax.media.MediaLocator;
    import javax.media.Player;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.format.VideoFormat;
    import javax.swing.JButton;
    import javax.swing.JComponent;
     
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGEncodeParam;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
     
    //import java.applet.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.geom.*;
    import java.lang.*;
    import java.awt.Component.*;
     
     
    public class Hud extends Panel implements ActionListener   
    { 
        public static Player player = null; 
        public CaptureDeviceInfo di = null; 
        public MediaLocator ml = null; 
        public JButton quit = null;
        public Image img = null; 
        public VideoFormat vf = null;  
     
        public Hud()   
        { 
        setLayout(new BorderLayout());  // definition d'une nouvelle fenetre 
        setSize(800,600);  				// et de sa taille
     
        quit = new JButton("Quit"); 	// definition du bouton quit
        quit.addActionListener(this);	//
     
     
        String str1 = "vfw:Video Blaster Webcam Go (VFW):1"; // les drivers de ma webcam
        ml = new MediaLocator("vfw://0"); 
     
        try 
        	{ 
            player = Manager.createRealizedPlayer(ml); 
            player.start(); 
            Component comp; 
     
            if ((comp = player.getVisualComponent()) != null) 
            	{ 
              add(comp,BorderLayout.CENTER); // comp = la video a afficher
     
            Graphics g = player.getVisualComponent().getGraphics();   // appel de la fonction qui dessine
            aff( g );												  // mon HDU (marche pas la supperposition)
     
            	} 
     
            add(quit,BorderLayout.SOUTH); 	// ajoute le bouton quit a la fenetre
     
        	}   
     
        catch (Exception e) 
        	{ 
            e.printStackTrace(); 
        	} 
        }
     
        public static void aff(Graphics g) 	// methode qui dessine mon HUD
    	 {									// avec les differents elements
     
    		Graphics2D g2 = (Graphics2D)g;
     
    		Font Arial= new Font("Arial",Font.PLAIN,25);
    		g2.setFont(Arial);
     
    		g2.setPaint(Color.green);
     
    		g2.drawString("Altitude :           m" ,15,25);
    		g2.drawString("Vitesse :           m/s",15,500);
     
    		g2.drawLine(0,300,800,300);
     
    	 }
     
        public static void main(String[] args)  	 
    	{
        Frame f = new Frame("H.U.D."); 			// titre de la fenetre
        Hud cf = new Hud(); 
     
        f.addWindowListener(new WindowAdapter() { 
        public void windowClosing(WindowEvent e) { 
        playerclose(); 
        System.exit(0);}}); 
     
        f.add("Center",cf); 		// positionnement de la cam
        f.pack(); 
        f.setSize(new Dimension(800,600)); //definiton de sa taille
        f.setVisible(true); 
        } 
     
        public static void playerclose()    // pour fermer le fenetre 
        { 									// avec la croix
        player.close(); 					// (il me semble!)
        player.deallocate(); 				//
        } 
     
        public void actionPerformed(ActionEvent e)  
        { 
        JComponent q = (JComponent) e.getSource(); 
     
        if (q == quit)   	// pour fermer 
        { 					//
        playerclose(); 		// la fenetre avec 
        System.exit(0);		// le bouton quit
        }
        } 
     
    }

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 140
    Points
    140
    Par défaut
    Déjà, pour commencer, tu mélanges du Swing et de l'AWT, et ça, c'est pas très bon. Exemple, tu insères un JButton (swing) et ta fenêtre est une Frame (AWT). Donc première chose à faire : passe tout en Swing (donc Frame devient JFrame etc...).

    Sinon, je pense que ton problème vient du fait que tu as un panel commun pour ton dessin et celui de ta vidéo. Du coup, tu dessines dedans, mais ta vidéo, à la nouvelle image, redessine et donc efface tout ce que tu avais fait. Ce que je te conseille, c'est d'utiliser un JLayeredPane (composant avec plusieurs couches), où tu dessines ta vidéo dans une couche, et tes dessins dans une autre couche, devant celle de ta vidéo.

    En tout cas, bon courage, ça doit pas être simple à faire ton truc !!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par plopinou
    Déjà, pour commencer, tu mélanges du Swing et de l'AWT, et ça, c'est pas très bon. Exemple, tu insères un JButton (swing) et ta fenêtre est une Frame (AWT). Donc première chose à faire : passe tout en Swing (donc Frame devient JFrame etc...).

    Sinon, je pense que ton problème vient du fait que tu as un panel commun pour ton dessin et celui de ta vidéo. Du coup, tu dessines dedans, mais ta vidéo, à la nouvelle image, redessine et donc efface tout ce que tu avais fait. Ce que je te conseille, c'est d'utiliser un JLayeredPane (composant avec plusieurs couches), où tu dessines ta vidéo dans une couche, et tes dessins dans une autre couche, devant celle de ta vidéo.

    En tout cas, bon courage, ça doit pas être simple à faire ton truc !!
    tu as raison ce n'est pas simple a faire surtout quand cela fait a peine un mois que tu debutes java !!

    je te remercie beaucoup pour ta reponse elle est tres detaillée et c'est ce dont j'avais besoin

    j'ai compris qu'il ne fallais pas avoir de l'AWT et du SWING mélangé et donc qu'il faut tout avoir dans le meme type mais j'ai quand meme beaucoup plus d'AWT que de SWING pourquoi est ce que je ne ferais pas tout passer en AWT, c'est impossible? ou peut etre parce que ma video c'est du SWING?

    en tout cas je vais essayer de faire ce que tu as dit, il ne me reste plus qu'a potasser bouquins et sites web pour maitriser tout cela.

    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Points : 140
    Points
    140
    Par défaut
    mais j'ai quand meme beaucoup plus d'AWT que de SWING pourquoi est ce que je ne ferais pas tout passer en AWT, c'est impossible?
    En fait, Swing est une surcouche de AWT, ce qui signifie en d'autres termes que Swing utilise AWT. En gros, la version 1 de java n'avait que AWT et Swing est apparu avec java 1.2. Donc en général, quand on peut, on préfère travailler avec Swing.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    d'accord je comprends, c'etait tout simple en fait et pas une question de quntitée utilisée !!! merci

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour, j'ai le meme probleme que toi.
    Je n'arrive pas a afficher des elements sur ma video.
    J'ai testé le JLayeredPanel() mais je n'y suis pas parvenu.

    Si tu as trouvé la solution peut tu me mettre un petit exemple stp

    Merci.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 35
    Points : 30
    Points
    30
    Par défaut La solution SVP
    Salut devil02,

    Tu as apparement résolu ton problème et je me trouve confronté au même peux tu s'il te plait poster ta solution.

    MERCI...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/05/2004, 11h13
  2. [Debutant]Probleme pour Debugger sours JCreator
    Par Flam dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 12/05/2004, 19h27
  3. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21
  4. [debutant]probleme servlet
    Par noOneIsInnocent dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/09/2003, 13h25
  5. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 20h29

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