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

Graphisme Java Discussion :

dessiner un polygone sur une photo


Sujet :

Graphisme Java

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

    Informations forums :
    Inscription : Février 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut dessiner un polygone sur une photo
    Bonjour à tous,

    Je suis en train de réaliser une petit applet dans laquel il me faut dessiner un polygone sur une photo. Je m'explique, je dois afficher une photo, et ensuite cliquer via la souris sur quelques points de la photo afin de dessiner le polygone.
    En utilisant les source trouver sur ce site je suis arriver d'un coté a afficher une photo via ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      public void init () 
      { 
        // Création d'une image et lancement de son chargement 
        img = getImage (getCodeBase (), "test.jpg"); 
        prepareImg (img, this); 
     
      } 
     
      public void paint (Graphics gc) 
      { 
          gc.drawImage (img, 0, 0, this); 
      }
    et d'un autre coté, j'arrive a afficher un polygone sur un fond blanc ( ie une image vierge), via ce long 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
     
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
     
    public class test extends Applet 
    implements MouseListener, MouseMotionListener {
     
    	Image img=null;
    	Graphics gi=null;
    	point un, deux, trois, quatre; 
     
    	public void init() {
    		addMouseListener(this);
    		addMouseMotionListener(this);
    		un = new point(0,0);
    		deux = new point(0,0);
    		trois = new point(0,0);
    		quatre = new point(0,0);
     
    		img=createImage(getSize().width, getSize().height);
     
    		gi=img.getGraphics();
     
    	}
     
    	public void paint (Graphics g) { 
    		g.drawImage(img,0,0,this);
    	}
     
    	public void update (Graphics g) {
    		paint(g);
    	} 
     
    	public void mousePressed(MouseEvent evt) {}
     
    	public void mouseReleased(MouseEvent evt) {}
     
    	public void mouseEntered(MouseEvent evt) {}
     
    	public void mouseExited(MouseEvent evt) {}
     
    	public void mouseClicked(MouseEvent evt)
    	{
    		if(!un.isDefini())
    		{
    			un.setX(evt.getX());
    			un.setY(evt.getY());
    			un.setDefini(true);
    			System.out.println("point1 : X " + evt.getX() + " Y " + evt.getY()); 
    			gi.fillOval(evt.getX()-3, evt.getY()-3, 6,6);
    			gi.drawOval(evt.getX()-6, evt.getY()-6, 12,12);
    			repaint();
    		}
    		else if(!deux.isDefini())
    		{
    			deux.setX(evt.getX());
    			deux.setY(evt.getY());
    			deux.setDefini(true);
    			System.out.println("point2 : X " + evt.getX() + " Y " + evt.getY());
    			gi.fillOval(evt.getX()-3, evt.getY()-3, 6,6);
    			gi.drawOval(evt.getX()-6, evt.getY()-6, 12,12);
    			gi.drawLine(un.getX(), un.getY(), deux.getX(), deux.getY());
    			repaint();
    		}
    		else if(!trois.isDefini())
    		{
    			trois.setX(evt.getX());
    			trois.setY(evt.getY());
    			trois.setDefini(true);
    			System.out.println("point3 : X " + evt.getX() + " Y " + evt.getY()); 
    			gi.fillOval(evt.getX()-3, evt.getY()-3, 6,6);
    			gi.drawOval(evt.getX()-6, evt.getY()-6, 12,12);
    			gi.drawLine(deux.getX(), deux.getY(),trois.getX(), trois.getY() );
    			repaint();
    		}
    		else if(!quatre.isDefini())
    		{
    			quatre.setX(evt.getX());
    			quatre.setY(evt.getY());
    			quatre.setDefini(true);
    			System.out.println("point4 : X " + evt.getX() + " Y " + evt.getY()); 
    			gi.fillOval(evt.getX()-3, evt.getY()-3, 6,6);
    			gi.drawOval(evt.getX()-6, evt.getY()-6, 12,12);
    			gi.drawLine(trois.getX(), trois.getY(),quatre.getX(), quatre.getY() );
    			gi.drawLine(quatre.getX(), quatre.getY(),un.getX(), un.getY() );
    			repaint();
    		}
     
    	}
    	public void mouseDragged(MouseEvent evt) {}
     
    	public void mouseMoved(MouseEvent evt) {}
    }
    cependant, si j'essaie de lié les deux code, soit je ne peut plus dessiner de polygone, soit la photo ne s'affiche pas.
    Pourriez vous m'aiguiller vers la bonne direction?
    Je pense personnellement que l'astuce se passe dans la gestion des graphique, mais comme je débute dans ce domaine, j'en suis vraiment pas spécialiste

    Je vous remercie d'avance pour toute l'attentoin que vous pourrez m'apporter.

    krater
    Merci

  2. #2
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Slt,

    Tu peut essayer un truc c'est de mettre ta photo en arriere plan de ton jpanel ou je sais pas quoi comme conteneur, et ensuite dessiner ton polygone.
    "L'ignorance, c'est la béatitude, ce qui explique peut-être pourquoi tout le monde sourit"
    Pensez au tag , ca évite de se galérer pour rien.

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

    Informations forums :
    Inscription : Février 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    salut,

    merci de ta réponse, mais je crois pas trop comprendre.

    j'ai pas de JPanel dans mon code, le composant si j'ai bien compris son role, est uniquement mon applet. il faudrait que je mette un autre composant "par dessus" mon applet, l'applet affichant la photo et le second composant affichant le polygone?
    mais dans ce cas je ne sais pas trop comment faire.

    je sais par conter que si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    g.drawImage(img,0,0,this);
    g.drawImage(getImage (getCodeBase (), "test.jpg"),0,0,this);
    dans la methode paint, ca bug

    je comprend pas trop la logique.
    Merci

  4. #4
    Nouveau membre du Club Avatar de RadicalBob
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Le fait que les polygones ne s'affiche pas est très simple :

    En fait quand tu appelles repaint(), le panel est "remis à zero" et redessiné selon la methode paint() donc tes polygones sont effacés. Par contre ton image est redissinée car il y g.drawImage() dans la methode paint

    tu peux, mais je ne connais pas tout ton code, mais en remplacant la methode paint par ca, ca devrait etre bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void paint (Graphics g) { 
    		g.drawImage(img,0,0,this);
                    if(un.isDefini())
    		{
                            gi.fillOval(evt.getX()-3, evt.getY()-3, 6,6);
    			gi.drawOval(evt.getX()-6, evt.getY()-6, 12,12);
     
    		}
                    //Etc... pour tous tes points...
    	}
    Edit - Tu peux d'ailleur enlever les drawOval qui ne sont pas dans la methode paint.
    Horloge : machine de grande morale pour l’Homme, lui rappelant sans cesse qu’il lui reste un peu de temps à vivre.

  5. #5
    Membre actif Avatar de fumiste972
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2003
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2003
    Messages : 228
    Points : 291
    Points
    291
    Par défaut
    Ouais il faut mettre tout ton code qui permet d'affiche ton applet dans la methode paint que tu as redefinie.
    "L'ignorance, c'est la béatitude, ce qui explique peut-être pourquoi tout le monde sourit"
    Pensez au tag , ca évite de se galérer pour rien.

Discussions similaires

  1. dessin de polygon sur une image
    Par romainmill dans le forum MATLAB
    Réponses: 7
    Dernier message: 01/08/2013, 16h26
  2. Dessiner un polygone sur une figure
    Par berberat dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/08/2007, 10h16
  3. [Image]Dessiner des rectangles sur une image
    Par navona dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 09/03/2006, 22h51
  4. HREF sur une photo
    Par tsyfar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/08/2005, 15h46
  5. Dessiner un rectangle sur une forme
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 13/08/2005, 01h08

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