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 :

Dessiner une bordure autour d'un polygone quelconque


Sujet :

2D Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Dessiner une bordure autour d'un polygone quelconque
    Salut tout le monde,
    dans le cadre de mon projet, je suis amené à générer une bordure autour d'une géométrie vectorielle (un polygone quelconque) que j'ai en entrée. En fait, c'est comme si je vais retracer un polygone un plus grand qui englobe le polygone de départ. En effet, je cherche une fonction qui me permet d'agrandir le polygone d'entrée en incrémentant et décrémentant (suivant leurs positions) les sommets. En résultat, je dois me trouver avec deux polygones de même forme qui s'emboîtent.

    J'ai passé des journées à chercher sur internet mais j'ai pas trouver grande chose .

    Si quelqu'un parmi vous a une idée ou une façon de faire, je serai très reconnaissant de me la transmettre.

    Bye

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    pourquoi ne trace tu pas un polygone par dessus mais en lineaire avec les memes coordonnées.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    Salut,

    Regarde du coté des méthodes de zoom.

    A+
    Hydraland

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par eclesia
    pourquoi ne trace tu pas un polygone par dessus mais en lineaire avec les memes coordonnées.
    Peux-tu stp m'éclairer un peu ta suggestion? Je suis débutant dans la manipulation des objects graphiques de Java.

    Merci!

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut la methode scale d'AffineTransform
    Que pensez-vous de la méthode scale( ) d'affineTransorm, est-ce-qu'elle peut être une solution au problème énoncé.

    Merci!

  6. #6
    Membre actif Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 239
    Points
    239
    Par défaut
    Salut,

    Je vois que tu as fait des recherches sans attendre des réponses par MP, c'est une bonne démarche. La méthode scale(), fait partie de la solution car il te permet d'agrandir ton polygone par contre le polygone agrandi sera décalé par rapport à l'original. Il faut donc faire une translation du polygone agrandit pour que celui-ci englobe ton polygone originale(Ce qui est ton but). Pour ce faire je pense que tu dois calculer le barycentre de ton polygone originale et celui du polygone agrandit, puis tu fais une tranlation du polygone agrandit tel que son barycentre ai les mêmes coordonnées que le barycentre du polygone original. J'espère que tu as compris

    A+
    Hydraland

  7. #7
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    ce que je conseil c'est simplement d'utiliser :

    g.fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
    pour faire un polygone en plein

    g.drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
    pour faire une ligne autour du polygone plein
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Points : 446
    Points
    446
    Par défaut
    Tu peux aussi essayer le setStroke de Graphic2D pour définir une épaisseur de trait plus importante et ensuite tu fais draw(shape) sur ton objet Graphic2D.
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  9. #9
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Points : 156
    Points
    156
    Par défaut
    une solution :
    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
     
     double scalex = ... ;
     double scaley = ... ;
     java.awt.geom.GeneralPath polygon = new  java.awt.geom.GeneralPath ();
     // Construction du polygon 
     // ...
     
    java.awt.geom.AffineTransform aft =    java.awt.geom.AffineTransform.getScaledInstance(scalex,scaley);
     
     java.awt.Shape transformedPolygon = 
     aft.createTransformedShape(polygon);
     
     java.awt.geom.Rectangle2D initBounds = polygon.getBounds2d();
     java.awt.geom.Rectangle2D finalBounds = transformedPolygon.getBounds2d();
     
    // On dessine le premier polygon :
    g2.draw(polygon);
     
    // On translate pour avoir le 2eme polygone englobant
    java.awt.geom.AffineTransform savedTransform = g2.getTransform();
    g2.translate(-(finalBounds.getWidth() - initBounds.getWidth())/2,
                      -(finalBounds.getHeight() - initBounds.getHeight())/2);
     
    // On dessine le 2eme polygone
    g2.draw(transformedPolygon);
     
    // Retour à la transformation initiale
    g2.setTransform(savedTransform);
    A+
    H.

Discussions similaires

  1. ajouter une bordure autour d'un rapport
    Par minooo dans le forum iReport
    Réponses: 1
    Dernier message: 02/05/2011, 11h00
  2. Comment afficher une bordure autour d'une listView ?
    Par titou624 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 06/01/2011, 12h54
  3. mettre une bordure autour d'un champ de texte à remplir
    Par catcom dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 21/02/2009, 22h04
  4. Réponses: 6
    Dernier message: 23/01/2009, 15h06
  5. Créer une bordure autour d'une image
    Par michaeljeru dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 09/05/2007, 10h41

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