CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Tracer des traits Java

K-Tastrophe
K-Tastrophe
Niveau 10
03 mai 2014 à 21:04:14

Bonsoir,
Je voudrais savoir, est-il possible de tracer des traits dans une fenêtre sans les garder. Je m'explique : je voudrais qu'entre l'origine de la fenêtre et mon curseur soit constamment tracé une ligne. J'ai donc fait, à chaque fois que je bouge la souris, je trace un trait entre l'origine et mon curseur. J'ai fait un premier essai mais le problème, c'est qu'à chaque fois que je bouge ma souris, ca trace un nouveau trait. Or j'en voudrais qu'un seul à la fois.
Donc si quelqu'un saurait comment faire, je suis preneur.
Je vous met mon code quand même :d)
https://gist.github.com/aanonymous/d3177ad4909d4c0340b2
J'ai mis à la suite dans le github mes 3 fichiers, même si c'est la partie Panneau.java qui est concerné pour ce topic.

Merci :ange:

Pseudo supprimé
Pseudo supprimé 03 mai 2014 à 21:20:46

Il y a la méthode g.clearRect(x, y, width, height); pour ça :)

K-Tastrophe
K-Tastrophe
Niveau 10
03 mai 2014 à 21:48:31

Je vois pas comment je peux l'utiliser dans mon cas. Car quand je mets cette methode dans PaintComponent(), ca change rien du tout. :(

Pseudo supprimé
Pseudo supprimé 03 mai 2014 à 22:22:29

Si j'ai bien compris ce que tu souhaite faire tu doit effacer tout les traits dans ta fenêtre à chaque fois que tu bouge la souris et retracer depuis l'origine jusqu'à la position de ta souris.

Tu peut utiliser la méthode clearRect donné par Raspebrry-PI pour effacer toute ta fenêtre, puis retracer ton trait.

K-Tastrophe
K-Tastrophe
Niveau 10
03 mai 2014 à 23:26:52

Enfaite c est pas exactement ce que je veux faire.
Mon programme consiste a tracer des traits a partir de points placés. A chaque fois que je clique, ca place un point et ca trace un trait entre ce point et le point placé precedement. Ce que je voudrais faire, c est tracé une droite "fictive" entre le point placé precedement et le curseur de la souris et cette droite sera tracé definitivement au moment du clic.
J espere que je me suis fait comprendre :(

Au pire, test mon code source et tu comprendras plus facilement mon probleme ( si tu as le temps biensur :hap: ).

Pseudo supprimé
Pseudo supprimé 03 mai 2014 à 23:37:57

Décompose ton problème :

1 - L'utilisateur clique
2 - Passage en mode "tracé de la future ligne" (Un booléen est levé)
3 - L'utilisateur clique
4 - Ajout du point à la liste des points "officiels"
5 - Passage en mode "représentation" (Le booléen retombe)

Entre 2 et 3, tu traces les lignes entre les points 0 à n ainsi qu'une ligne entre le point n et les coordonnées courantes de la souris. Pour la forme, tu peux changer de couleur pour la ligne "temporaire" :)

Pseudo supprimé
Pseudo supprimé 03 mai 2014 à 23:47:20

Précision : dans tous les cas, et à moins d'utiliser un buffer, tu dois retracer TOUTES tes lignes dans ta méthode paintComponent. Pour cela, tu dois maintenir, dans le cas le plus basique, une liste de points et faire un truc du genre :

g.clearRect(les bonnes dimensions);
g.setColor(Color.BLACK);
if (this.points.size()>0) {
Point lastPoint = this.points.get(0);
for (Point point : this.points);
g.drawLine(point.getX(), point.getY(), lastPoint.getX(), lastPoint.getY());
lastPoint = point;
}
}
g.setColor(Color.RED);
g.drawLine(this.currentMouseX, this.currentMouseY, lastPoint.getX(), lastPoint.getY());
PS: En java, les variables commencent par une minuscule, les majuscules sont réservées aux constantes et surtout aux classes.

K-Tastrophe
K-Tastrophe
Niveau 10
04 mai 2014 à 15:47:29

Donc il faut que je stock tous les points précédemment tracé afin qu'à chaque fois que je bouge la souris, je face un ClearRect et je retrace immédiatement après les traits que l'utilisateur a fait. C'est ca ? :)

Pseudo supprimé
Pseudo supprimé 04 mai 2014 à 18:20:04

Exact, tu as tout compris :)

K-Tastrophe
K-Tastrophe
Niveau 10
04 mai 2014 à 19:13:17

Alors j'ai fait plus ou moins ce que tu as dit et ca marche pluôt bien (encore quelques petites erreurs mais elles sont banales). La ou il y a un problème, c'est pour le stockage. Je faisais mes test avec un tableau avec une taille defini. Mais pour mon programme final, je ne connais pas la taille final de mon tableau. Au départ, je me disais qu'à chaque fois que l'utilisateur place un point, j'augmente la taille du tableau de 1 et c'est tout. Mais j'ai l'impression que c'est pas possible en java :( . J'ai fais quelques recherches et la seul solution que j'ai trouvé c'est à chaque de créer un nouveau tableau et copier l'ancien tableau dans celui-ci. Est-ce bien la meilleur solution ? :hap:

Pseudo supprimé
Pseudo supprimé 04 mai 2014 à 20:00:13

C'est pour cette raison que je t'ai suggéré une liste. Tu débutes en programmation, non ?

private List<Point> points = new ArrayList<>();

...

this.points.add(tonNouveauPoint);

...

K-Tastrophe
K-Tastrophe
Niveau 10
04 mai 2014 à 20:54:39

Ok, c'est pour ca que je comprenais pas trop le bout de code que tu m'as donné :hap:
Et oui, je debute en Java. Ca fait tout juste 1 mois que j'ai commencé :hap:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment