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

AWT/Swing Java Discussion :

suite dessin polygone à main levée


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut suite dessin polygone à main levée
    Bonjour,

    maintenant que j'ai réussi à dessiner un polygone à main levée, j'aimerais pouvoir en dessiner plusieurs.
    Comment est ce que je peux faire cela? Parce que pour l'instant, je ne peux en faire qu'un seul.

    Ensuite, je voudrais pouvoir en sélectionner un pour le supprimer.

    J'ai vu qu'il y avait une discussion sur la sélection et la suppression sur un panel mais ça ne m'avance pas tellement donc si quelqu'un pouvait m'aider, ce serait cool.

    diambu

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    Euh ? Tu sais faire un polygone ? Parfait ! Une fois l'edition terminee (c'est a toi de determiner la maniere dont on termine cette edition soit par exemple lorsqu'on pose le dernier point sur ou a cote/dans un certain rayon du premier de la liste ou lorsqu'on clique avec la molette de la souris), tu parcoure ta liste de points pour creer une nouvelle Shape (soit avec Polygon, soit avec GeneralPath) et tu stockes ce polygone dans une liste de figure. Tu vides alors ta liste de points entrain d'etre edites, tu re-affiches et tu recommence jusqu'a ce que l'edition soit a nouveau terminee et a nouveau tu ajoute ce polygone a la liste des polygones crees. Tu re-affiches.

    Pour la selection : lors d'un clic a la souris tu parcoures la liste des polygones (en general en partant de la fin car ceux affiches sur le dessus sont a la fin de la liste) et tu appelles la methode contains() pour verifier que tu es dedans. Si c'est le cas, ton polygone actif est le polygone actuellement teste et tu sors de la boucle de recherche. Tu re-affiches. A toi de voir pour le peindre de maniere differente (possiblement en affichant sa boite englobante en pointilles pour le faire ressortir ou alors en l'affichant d'une autre couleur) pour le mettre en valeur.

    Pour supprimer, a la reception de l'evenement clavier correspondant a la touche SUPPR, une action ou un evenement souris que tu definieras, tu retires ton polygone selectionne de la liste des polygones et tu nullifie la variable du polygone selectionne. Tu re-affiches.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut
    merci bouye pour les explications qui sont plus que précises. Je vais les appliquer de suite.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    bonsoir,

    je sais que j'arrive un peu tard, mais je viens de débuter en programmation il n'y a pas longtemps et j'ai un souci similaire.
    je dessine un polygone dans une jframe avec la procédure mouse moved mais le souci c'est que je ne sais pas comment arrêter de faire suivre mon trait avec la souris une fois le polygone fermé (qui se fait à l'aide du clic molette). ensuite est-ce que vous pourriez donner plus d'explications concernant l'outil Shape.
    Moi j'avais essayé en voulant faire une ArrayList d'ArrayList de Point mais j'ai dû zapper énormément de chose car rien n'était bon sauf la déclaration. est-ce que quelqu'un pourrait-il m'aider?? s'il vous plaît.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    C'est simple, il te faut gerer un etat "edition"/"pas edition" :

    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
    private List<Shape> shapeList = new LinkedList<Shape>();
    private List<Point> pointList = new LinkedList<Point>();
    private boolean isEditing = false;
    private int mouseX;
    private int mouseY;
     
    /**
    * {@inheritDoc}
    */
    @Overridepublic void mouseMoved(MouseEvent event) {
      if (isEditing) {
        mouseX = event.getX();
        mouseY = event.getY();
      }
      repaint();
    }
     
    /**
    * {@inheritDoc}
    */
    @Overridepublic void mouseClicked(MouseEvent event) {
      if (SwingUtilities.isLeftClickButton()) {
         // 1er click on demarre l'edition.
         if (!isEditing) {
           isEditing = true;
         }
         pointList.add(new Point(event.getX(), event.getY());
       }
       else if (SwingUtilities.isMiddleClickButton()) { 
         isEditing = false;
         if (pointList.size() >= 2) {
           Path2D.Float path = new Path2D.Float();
           path.moveTo(pointList.get(0));
           for (int i - 1 ; i < pointList.size() ; i++) {
              path.lineTo(pointList.get(i));
           }
           path.closePath();
           shapeList.add(path);
         }
         pointList.clear();
       }
       repaint();
    }
     
    /**
    * {@inheritDoc}
    */
    @Override
    protected void paintComponent(Graphics g) {
      [...]
      for (Shape shape : shapeList) {
         g2d.draw(shape);
      }
      if (isEditing) {
        g2d.setColor(Color.RED);
        for (int i = 0 ; i < pointList.size() - 1 ; i++) {
          Point p1 = pointList.get(i);
          Point p2 = pointList.get(i+1);
          g2d.drawLine(p1.x, p1.y, p2.x, p2.y);
        }
        g2d.setColor(Color.GREEN);
        Point p1 = pointList.get(pointList.size()-1);
        g2d.drawLine(p1.x, p1.y, mouseX, mouseY);    
      }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 6
    Par défaut
    Merci pour la rapidité de votre réponse bouye. En vous écrivant d'autre question se pose à moi : quelle est la différence entre une List, une LinkedList et une ArrayList?
    quelle est le rôle de la variable Path2D.Float?
    je n'arrive pas à imaginer à quoi correpond l'objet Shape? est-ce un polygone particulier?
    je n'arrête pas de découvrir les choses, et pourtant j'ai l'impression à chaque fois qu'il me reste encore plus à découvrir que la dernière fois. c'est bizarre? non?
    j'espère que vous pourrez encore venir à mon aide bouye.

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    C'est pourtant pas dur :

    Citation Envoyé par bouye Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [...]
        repaint();
    [...]
    Je ne sais pas chez moi un polygone ca a au moins 2 points (3 chez d'autres), de plus le code dessine le polygone en train d'etre edite en rouge et la ligne en train d'etre tiree en vert. Apres c'est du code tape sur le vif, non teste, qui peut avoir besoin d'etre corrige pour tourner.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Dessin à main levée
    Par miss_sig dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 23/05/2014, 18h48
  2. Logiciel UML "dessins à main levée"
    Par Ricoco dans le forum Diagrammes de Classes
    Réponses: 3
    Dernier message: 01/08/2012, 12h58
  3. Dessin à main levée avec Delphi
    Par Duan dans le forum Débuter
    Réponses: 3
    Dernier message: 17/07/2011, 17h06
  4. Réponses: 1
    Dernier message: 10/01/2011, 14h50
  5. dessin polygone à main levée sur panel
    Par diambu dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 02/07/2007, 11h52

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