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] [Graphics2d] coordonnees d'un "shape"


Sujet :

2D Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Points : 28
    Points
    28
    Par défaut [Debutant] [Graphics2d] coordonnees d'un "shape"
    Bonjour,

    Je voudrais savoir si il est possible de recuperer les coordonnees x et y contenues dans un "shape" sans passer par un test utilisant la méthode "contains".

    merci par avance

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut,

    regarde du cote du PathIterator (chaque Shape en envoie un). C'est un ensemble de points et de points de controles (pour les cubiques et les quadriques). Donc tu peux avoir les coordonnees de certains points u contour.

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci kangourou mais j'ai regardé et je ne comprends pas bien comment se servir de ce pathiterator.

    En plus je n'arrive pas à dénicher d'exemple sur le net d'utilisation d'un pathiterator.

    D'apres la documentation de java je peux utilisé la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shape.getPathIterator(affineTransform)
    mais je n'arrive pas à la mettre en pratique, pourrais tu s'il te plait me donner un exemple d'utilisation ?

    merci

  4. #4
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    salut,

    je te fais ca au vol, mais ca doit etre a peu pres la marche a suivre :

    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
     
    Shape shape = ....;
    float[] coord = new float[6];
    Vector points = new Vector();
    int type;
     
     
    PathIterator pi = shape.getPathIterator();
    while(!pi.isDone()){
       type = pi.currentSegment(coords);
       switch(type){
            case PathIterator.SEG_MOVETO:
            // change pour un nouveau segment
            points.add(new Point2D.Double(coord[0], coord[1});
            break;
     
            case PathIterator.SEG_LINETO:
            // trace une ligne
            points.add(new Point2D.Double(coord[0], coord[1]);
            break;
     
            case PathIterator.SEG_QUADTO:
            // trace un arc de parabole
            points.add(new Point2D.Double(coord[0], coord[1]);
            points.add(new Point2D.Double(coord[2], coord[3]);
            break;
     
            case PathIterator.SEG_CUBICTO:
            // trace une courbe de bezier cubique
            points.add(new Point2D.Double(coord[0], coord[1]);
            points.add(new Point2D.Double(coord[2], coord[3]);
            points.add(new Point2D.Double(coord[4], coord[5]);
            break;
        }
     
        pi.next();
    }
    Voila, normalement ca te sort un Vector qui contient tous les points de controles de ta forme. ce n'est pas exactement comme la forme elle-meme, mais ca doit peremttre de faie qlq chose.

    A+[/code]

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup pour ton aide kangourou !

    A priori cela marche très bien il me reste juste un petit problème , comment je peux extraire la valeur x et la valeur y du vecteur ?

    Il me renvoie un objet de type Point2D , par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Point2D.Double[117.5, 95.0]
    Point2D.Double[123.515625, 95.0]
    Point2D.Double[125.3125, 95.0]
    Point2D.Double[126.0859375, 95.6953125]
    voila ,encore merci kangourou

  6. #6
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    dans Point2D tu as une methode getX() et une methode getY() ....

    Sinon, si tu sais que c'est un Point2D.Double, tu peux utiliser p.x et p.y


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    n = points.size();
    double [] ptx = new double[n];
    double [] pty = new double[n];
    Point2D.Double point;
     
    for(int i=0; i<n; i++){
        point = (Point2D.Double) points.elementAt(i);
        ptx[i] = point.getX();
        pty[i] = point.getY();
    }
    devrait eter ok.. .

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Je te fais un GRAND merci kangourou.

    Mon programme marche très bien grace à toi.

    merci beaucoup pour ton aide précieuse.

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

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