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 :

modifier les coordonnées d'un Area


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut modifier les coordonnées d'un Area
    Bonjour,
    j'aimerai pouvoir modifier les coordonnées (x,y) d'un Area pour pouvoir le faire correspondre à un autre shape

    Mon area est composer de plusieurs lignes (Collection)
    L'assemblage des lignes, correspond dans mon appli à un objet

    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
     
    	  /**
               * Returns an area matching the union of all <code>lines</code> to do the shapes. 
               */
    	  public Area getGraphicEquipmentArea() {
    		  Area graphicEquipmentArea = new Area();
    		  for (EquipmentLine equipmentLine : this.equipmentLines) {
    			  graphicEquipmentArea.add(new Area(getShape(equipmentLine.getPoints())));			  
    		  }
    		  return graphicEquipmentArea;
    	  }
     
    	  /**
               * Création d'un chemin qui relie le premier
               * point au autres point.
               */
    	  private Shape getShape(float [][] points) {
    		GeneralPath path = new GeneralPath();
    		path.moveTo(points [0][0], points [0][1]);
    	    for (int i = 1; i < points.length; i++) {
    	    	path.lineTo(points [i][0], points [i][1]);
    	    }
    	    path.closePath();//fermeture du chemin
    	    return path;
    	  }
    Voici ma méthode pour renvoyer les coordonnées d'une ligne qui compose mon équipement
    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
    66
    67
    68
    69
    70
    71
    72
    73
     
      /**
       * Renvoie les coordonées des quatres points
       *  décrivant le contour de ce trait
       * @return an array of the 4 (x,y) coordinates of the wall corners.
       */
      public float [][] getPoints() {
    	  if (this.pointsCache == null) {
    		  //Calcul des points du contour du rectangle de ce trait
    		  float [][] linePoints = getRectanglePoints();
    		  float limit = 2 * this.thickness;
    		  // Si le trait est joint à son extremité de départ 
    		  // à un autre trait lineAtStart.... 
    		  if (this.lineAtStart != null) {
    			  float [][] lineAtStartPoints = this.lineAtStart.getRectanglePoints();
    			  // Si le trait lineAtStart est joint à ce trait 
    			  // à son extremité de fin....
    			  if (this.lineAtStart.getEquipmentLineAtEnd() == this) {
    				  //....calcul de l'intersection POi de la ligne
    				  //(P0,P1) du trait avec la ligne(P1,P0) du trait
    				  // lineAtStart, et de l'intersection P3i de la ligne
    				  //(P3,P2) de cetrait avec la ligne (P2,P3)
    				  //du trait lineAtStart...
    				  computeIntersection(linePoints [0], linePoints [1], 
    						  lineAtStartPoints [1], lineAtStartPoints [0], limit);
    				  computeIntersection(linePoints [3], linePoints [2],  
    						  lineAtStartPoints [2], lineAtStartPoints [3], limit);
    				  //...si le trait lineAtStart est joint à ce trait
    				  //à son extrémité de départ, faire le m^me calcul
    				  //en inversant les points P0,P1,P2,P3 du trait lineAtStart
    			  } else if (this.lineAtStart.getEquipmentLineAtStart() == this) {
    				  computeIntersection(linePoints [0], linePoints [1], 
    						  lineAtStartPoints [2], lineAtStartPoints [3], limit);
    				  computeIntersection(linePoints [3], linePoints [2],  
    						  lineAtStartPoints [0], lineAtStartPoints [1], limit);
    			  }
    		  }  
    		  // Si le trait à son extremité de fin à un autre
    		  //trait lineAtEnd...
    		  if (this.lineAtEnd != null) {
    			  float [][] lineAtEndPoints = this.lineAtEnd.getRectanglePoints();
    			  //Si le trait lineAtEnd est joint à ce trait
    			  //à son extrémité de départ...
    			  if (lineAtEnd.getEquipmentLineAtStart() == this) {
    				  //....calcul de l'intersection P1i de la ligne
    				  //(P1,P0) du trait avec la ligne(P0,P1) du trait
    				  // lineAtEnd, et de l'intersection P2i de la ligne
    				  //(P2,P3) de cetrait avec la ligne (P3,P2)
    				  //du trait lineAtEnd...
    				  computeIntersection(linePoints [1], linePoints [0], 
    						  lineAtEndPoints [0], lineAtEndPoints [1], limit);
    				  computeIntersection(linePoints [2], linePoints [3], 
    						  lineAtEndPoints [3], lineAtEndPoints [2], limit);
    				  //...si le trait lineAtEnd est joint à ce trait
    				  //à son extrémité de fin, faire le même calcul
    				  //en inversant les points P0,P1,P2,P3 du trait lineAtEnd
    			  } else if (lineAtEnd.getEquipmentLineAtEnd() == this) {
    				  computeIntersection(linePoints [1], linePoints [0],  
    						  lineAtEndPoints [3], lineAtEndPoints [2], limit);
    				  computeIntersection(linePoints [2], linePoints [3], 
    						  lineAtEndPoints [0], lineAtEndPoints [1], limit);
    			  }
    		  }
    	      // Cache shape
    	      this.pointsCache = linePoints;
    	  }
     
    	    return new float [][] {
    	            {this.pointsCache [0][0], this.pointsCache [0][1]},
    	            {this.pointsCache [1][0], this.pointsCache [1][1]},
    	            {this.pointsCache [2][0], this.pointsCache [2][1]},
    	            {this.pointsCache [3][0], this.pointsCache [3][1]}};
      }
    Y a til une méthode pour modifier les coordonnées (x,y) de mon area
    après sa création pour pouvoir le faire correspondre à mon autre shape (de même width et height)? en gros j'aimerai supperposer mon area à mon shape
    merci pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Bonsoir,

    j'ai pas très bien compris ce que tu as dit.

    Toutefois tu peux gérer la position d'un widget pixel par pixel avec setBounds("absisse", "ordonnée", "largeur", "hauteur")
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  3. #3
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Bonjour,

    je vais faire plus simple .... efectivement, c'est dur à comprendre

    Comment puis-je modifier les coordonnées (x,y) d'un area ou d'un shape?

    J'aimerai bien faire un setBounds(x,y,width,height) mais cela ne fonctionne pas sur un shape ou un area

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En fait tu prends le problème dans le mauvais sens.

    Ta Shape sera dessinée à un endroit, et ne porte pas en elle même sa position.

    la façon simple de faire est de demander une translation des graphics au point où tu veux dessiner ta shape et de dessiner ta shape
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre habitué Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 582
    Points : 185
    Points
    185
    Par défaut
    Salut sinok,

    J'arrive bien à gérer les coordonnées à un shape dans la version simplifié de mon programme mais le shape est un rectangle simple.

    Pour mon appli, les coordonnées sont importante... mon problème vient bien de ma nouvelle version (et de mon shape amélioré)

    Mon problème est (je l'espère ) plus explicite dans l'autre post.
    J'ai d'ailleurs re-poster car j'essaye de prendre le sujet d'une autre façon

    Merci pour ton aide

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2015, 10h01
  2. [EMF] Modifier les coordonnées d'un élément EMF
    Par deathness dans le forum Eclipse Modeling
    Réponses: 1
    Dernier message: 31/01/2012, 16h33
  3. Modifier les coordonnées d'un clip
    Par cat2275 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 03/06/2010, 17h21
  4. Modifier les coordonnées d'un point
    Par Trowa76 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/06/2009, 14h29
  5. Récuperer les coordonnées d'un vecteur
    Par kerzut dans le forum OpenGL
    Réponses: 5
    Dernier message: 15/04/2003, 11h51

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