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
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
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+
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 :
mais je n'arrive pas à la mettre en pratique, pourrais tu s'il te plait me donner un exemple d'utilisation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part shape.getPathIterator(affineTransform)
merci
salut,
je te fais ca au vol, mais ca doit etre a peu pres la marche a suivre :
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.
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(); }
A+[/code]
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 :
voila ,encore merci kangourou
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]
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
devrait eter ok.. .
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(); }
Je te fais un GRAND merci kangourou.
Mon programme marche très bien grace à toi.
merci beaucoup pour ton aide précieuse.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager