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

  FORUM HardWare.fr
  Programmation
  Java

  Probleme ente 2 types: Graphics / Component [Debutant]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme ente 2 types: Graphics / Component [Debutant]

n°938121
devil02
Posté le 05-01-2005 à 16:39:56  profilanswer
 

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  :cry:  
 
je vous remercie d'avance pour vos reponses.
 
ci dessous voici mon code
 
 
 
 

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


Message édité par devil02 le 12-01-2005 à 20:10:14
mood
Publicité
Posté le 05-01-2005 à 16:39:56  profilanswer
 

n°949772
devil02
Posté le 10-01-2005 à 09:39:45  profilanswer
 

apres quelques recherches je me suis apercu que l'utilisation d'un JLayeredPane avec plusieurs couches (une pour la video et l'autre pour les textes) s'avererait la meilleure solution.
seulement, je ne sais pas trop comment l'utiliser, j'ai fait des recherches sur le net, j'ai trouvé pas mal de resulatats mais je n'arrive pas a assimiler ces notions.
si quelqu'un se sent capable d'essayer de m'expliquer l'essentiel ou connait de bon tutos merci de me contacter soit sur ce topic soit par message privé ou alors directement sur ma boite mail : devil02toulouse@hotmail.com
 
merci d'avance

n°951722
devil02
Posté le 12-01-2005 à 15:46:23  profilanswer
 

personne ne sait comment faire?svp c'est super important pour un stage et je suis bloqué, je ne demande pas qu'on fasse mon satge a ma place je veut y arriver seul, j'ai juste besoin d'un ptit coup de pouce.
 
merci

n°1028228
sh4rk93
Posté le 29-03-2005 à 12:54:00  profilanswer
 

Bonjour j'aurais voulu savoir si tu avais reussi a réglé ton probleme moi j'arrive a utiliser les JLayeredPane mais le player de la camera se met toujours au premier plan

n°1059756
spiderbana​na
Posté le 25-04-2005 à 14:28:45  profilanswer
 

Si l'affichage du player est un composant lourd (c'est affiché nativement). Tu ne peux pas dessiner par dessus avec java. Le seul truc que tu peux mettre par dessus, c'est un composant lourd, mais avec java, ca me semble difficile.


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

  Probleme ente 2 types: Graphics / Component [Debutant]

 

Sujets relatifs
[PHP] Problème div et includeprobleme acces a ODBC
[Shell/Batch] Probleme gravage Cd multisessionhelp; problème de javascript sur mon domaine
Problème avec MySQL alpha 5.0.2[java 1.5] problème de type
Problème evenement clavier sous fire fox.[OpenGL] Probleme avec le rouge ... [resolu]
[RESOLU]problème de récupération de dateProblème TextArea + Javascript
Plus de sujets relatifs à : Probleme ente 2 types: Graphics / Component [Debutant]


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