Tracer un trait en java
Résolu
sa0612
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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!
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:
- Tracer un trait en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
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!
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!
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! =)
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! =)
Re,
Dans mon exemple
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
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
Salut,
Il est à noter qu'avec:
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...)
Si y1 = y2 tu obtiens une ligne horizontale de x1 à x2
Exemple:
Plus les dimensions sont grandes, plus le cercle est bien dessiné et plus le diametre est bien inscrit dans le cercle
Cordialement,
Dan
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