Trouver un polygone

Résolu
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007 - 26 avril 2007 à 14:17
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 4 mai 2007 à 14:47
Bonjour à tous,je vais essayer de vous expliquer mon problème le plus clairement possible.
En fait mon problème est plus ou moins la suite de mon post précédent : http://www.javafr.com/infomsg_REMPLISSAGE-FORME-QUELCONQUE_926575.aspx#5

Voila j'ai ma zone de dessin sur laquelle on dessine le plan d'un bâtiment. Dans cette zone quand je clique sur mon dessin je dois colorier le fond de mon polygon .Et c'est là qu'intervient mon problème le dessin est tracé à partir de point et non avec l'objet Polygon. Donc j'avoue que je suis un peu perdu et que je ne sais pas comment m'y prendre mon résoudre mon problème qui est en gros comment colorier le fond d'un polygon (qui dans mon cas sera une pièce du batiment) sachant qu'on utilise que des points.

Merci

15 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2007 à 13:53
Tu colores les pixels dont leurs couleurs est différent du couleur du contour.

C'est le floodfill.
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 avril 2007 à 14:56
Je n'ai jamais utilisé la classe Polygone en java, mais ca doit être la même chose qu'en vb je pense :
Un polygone n'est rien d'autre qu'une forme constituée de points liés entre eux, donc la classe Polygon doit sûrement prendre en paramètre un tableau de points...
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 avril 2007 à 15:14
Salut:




Utilises la méthode fillPloygon () de la classe java.awt.Graphics.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
26 avril 2007 à 15:15
Assures toi que tu as bien construit ton objets Polygon.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 15:22
Salut,

de plus si tu dessine via des tableaux de points tu peux facilement reconstruire un objet Polygon avec .... et donc finir par exploiter l'exemple de code que je t'ai donné dans l'autre poste

ref java doc

Polygon
public Polygon(int[] xpoints,
int[] ypoints,
int npoints)

Constructs and initializes a
Polygon
from the specified
parameters.

<dl> * Parameters: :
xpoints
- an array of x coordinates<dd>
ypoints
- an array of y coordinates<dd>
npoints
- the total number of points in the
Polygon
* Throws: :
NegativeArraySizeException
- if the value of
npoints
is negative.
IndexOutOfBoundsException
- if
npoints
is
greater than the length of
xpoints

or the length of
ypoints
.
NullPointerException
- if
xpoints
or
ypoints
is
null
.
</dd></dl>

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007
26 avril 2007 à 15:47
Ok jvois bien ce que vous me conseillez, mais je c pas si cela va fonctionner, jvais essayer de vous donner un exemple.
Imaginons je commence à dessiner un batiment en forme de U, je fais les contours j'ai donc mon premier polygon donc à partir de la si je clique dessus je peu changer la couleur de fond, très bien.
Mais si dans ce U je commence à tracer des droites pour le découper en plusieurs petite pièce cela ne va t-il pas poser problème car je ne peux pas contruire un polygone avec seulement 2 points.
Vous voyez ce que je veux dire? si c'est pas très clair jpeux essayer de faire un dessin.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
26 avril 2007 à 16:45
Salut,

pour faire ce que tu veux tu peux combiner avec l'objet java.awt.geom.Area qui te permet de faire des union, exclusion, etc de shape (Polygon est une Shape)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007
26 avril 2007 à 17:35
ok merci bien j'vais voir ce qu'il est possible de faire avec cet objet Area.
Encore merci.
0
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007
27 avril 2007 à 13:28
J'ai regardé d'un peu plus près le code que je dois reprendre et ça ne vas pas collé. Tous les dessins sont fais avait partir de points et il n'est pas possible de créer d'objet polygon quand on dessine, il y a trop de cas d'erreur à gérer et il faut aussi gérer les points des polygones (en gros savoir si un point doit être ajouté à un polygone ou à un autre).
La seule solution que je vois et que lorsqu'on clique sur le dessin pour changer la couleur d'une pièce, il faut alors récupérer le point du clic de la souris et essayé (je sais pas par quel moyen) de déterminer dans quel polygon il se trouve.
J'vais encore bien m'amusé.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2007 à 13:39
Dans ce cas tu peux raisonner sur les couleurs des contours.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2007 à 13:44
Une méthode qui me vient l'esprit est de faire une petite fonction récusive.
Le point de départ sera le point du clique.
A partir de ce point tu trace deux axes orthogonales qui permettent de découvrir  les exrimités haut, bas, gauche et droite du polygone.

La récursivité:
pour chaque point des deux axes tu répètes la même opération (traçage axes) .

J'espère que çe ne va pas bloquer la pile d'exécution.
0
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007
27 avril 2007 à 13:46
Que veux-tu dire par raisonner sur les couleurs des contours ?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 avril 2007 à 13:50
Petit dessin:

 /----------|-------------------|

 |          |                   |
/-----------x-------------------|
|           |        -----------|
|           |       /
|-----------|-------/
0
GIGN90 Messages postés 13 Date d'inscription mardi 16 novembre 2004 Statut Membre Dernière intervention 4 mai 2007
4 mai 2007 à 09:26
Merci grâce à vous j'ai pu faire ce que je voulais, pour cela j'ai appliquer l'algorithme de remplissage (appelé[auteurdetail.aspx?ID=237842 ] aussi floodfill) que proposait Ombitious_Developper, pour ceux que ça intéresse voici le bout de code qui m'a été utile :

public void floodFill(BufferedImage _img, Point _p){
        Stack stack = new Stack();
        Point pixel= _p;
        stack.push(pixel);
        while(!stack.empty()){
            pixel = (Point)stack.pop();
            if(_img.getRGB(pixel.x,pixel.y)==-1118482){
                _img.setRGB(pixel.x,pixel.y,Color.green.getRGB());
                stack.push(new Point(pixel.x+1,pixel.y));
                stack.push(new Point(pixel.x-1,pixel.y));
                stack.push(new Point(pixel.x,pixel.y+1));
                stack.push(new Point(pixel.x,pixel.y-1));
            }
        }
    }
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
4 mai 2007 à 14:47
Salut:

ça serait mieux de poster ce code en tantque snippet.
0
Rejoignez-nous