Tracer un trait en java

Résolu/Fermé
sa0612 Messages postés 4 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 4 janvier 2010 - 1 janv. 2010 à 19:37
 Utilisateur anonyme - 3 janv. 2010 à 18:19
Bonjour, j'ai un problème de programmation en javasur un projet que je dois rendre Lundi. Je m'explique:
J'ai généré 2 points sur un panneau avec des coordonnées X et Y aléatoires, voici l'exemple pour un point:

public void paintComponent(Graphics g)
{
int posX1 = (int)(Math.random()*300+1);
int posY1 = (int)(Math.random()*300+1);

g.setColor(Color.red);
g.fillOval(posX1, posY1, 10, 10);

(...)


et je veux ensuite relier ces deux points par une droite, j'ai essayé cette instruction:
g.drawLine(new Point(posX1,posY1),new Point(posX2,posY2));

Mais NetBeans me sort une erreur en me disant que 4 "int" sont requis pour utiliser cette methode, je ne comprends pas car mes posX1, posX2, posY1 et posY2 sont déclarés en "int"...

Si quelqu'un peut m'aider à résoudre ce problème ou connait une autre methode je vous en serait très reconnaissante! Merci d'avance!
A voir également:

4 réponses

sa0612 Messages postés 4 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 4 janvier 2010 3
3 janv. 2010 à 15:13
Merci pour ta réponse Dan, mais je pense que j'ai mal exprimé mon problème.

En fait les cercles de 10 cm de diamètre représentent les sommets d'un arbre couvrant, et je voudrais tracer les arcs entre ces sommets. Or je veux que mon programme crée un nouvel arbre chaque fois qu'on le lance, c'est pour cela que je génère les coordonnées de mes sommets aléatoirement.

Si tu as une solution à ça, je suis preneuse aussi! =)

Mais merci quand même d'avoir répondu!
2
sa0612 Messages postés 4 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 4 janvier 2010 3
3 janv. 2010 à 15:42
J'ai résolu mon problème merci beaucoup!

Au lieu d'écrire
g.drawLine(new Point(posX1,posY1),new Point(posX2,posY2));

j'ai écris
g.drawLine(posX1, posY1, posX2, posY2);

et ça a marché tout seul! =)
1
Utilisateur anonyme
3 janv. 2010 à 18:19
Re,

Dans mon exemple

g.drawLine(posX1, posY1 + hOval/2, posX1 + wOval, posY1 + hOval/2);


la partie soulignée posX1 + wOval, posY1 + hOval/2); est le calcul de posX2, posY2, mais pour le tracé du diamètre, j'aurais dû le signaler...

Cordialement,

Dan
0
Utilisateur anonyme
2 janv. 2010 à 12:00
Salut,

Il est à noter qu'avec:

g.setColor(Color.red); 
g.fillOval(posX1, posY1, 10, 10);

tu obtiendras un cercle rouge de diamètre 10 si les coordonnées x = y sont compatibles avec ton cadre.

Pour obtenir une ligne figurant le diamètre horizontal de cercle (si c'est bien ce que tu veux...)

g.setColor(Color.black); // pas rouge sinon ne sera pas visible
g.drawLine(x1, y1, x2, y2);


Si y1 = y2 tu obtiens une ligne horizontale de x1 à x2

Exemple:

         int wOval = 10;
         int hOval = 10;
         int posX1 = 40;
         int posY1 = 54;
         g.setColor(Color.red); 
         g.fillOval(posX1, posY1, wOval, hOval); 
      
      // tracer le diametre horizontal
         g.setColor(Color.black);
         g.drawLine(posX1, posY1 + hOval/2, posX1 + wOval, posY1 + hOval/2);
         //g.drawLine(posX1 +1, posY1 + hOval/2, posX1 + wOval-1, posY1 + hOval/2); // en trichant


Plus les dimensions sont grandes, plus le cercle est bien dessiné et plus le diametre est bien inscrit dans le cercle

Cordialement,

Dan
-1