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

2D Java Discussion :

Trait en pointillé


Sujet :

2D Java

  1. #1
    Invité
    Invité(e)
    Par défaut Trait en pointillé
    Bonjour,

    J'aimerais tracer un trait en pointillés en utilisant DrawLine. J'ai vu sur les forums et sur le site de Java qu'on pouvait utiliser BasicStroke, mais je ne sait pas du tout à quoi correspond les paramètres.

    J'ai mis dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Stroke stroke = new BasicStroke(epaisseur, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,new float[] {trait, espace}, 0);
    ((Graphics2D) g).setStroke(stroke);
    avec trois variables epaisseur l'épaisseur du trait, trait la longueur de chaque morceau de trait et espace la distance entre chaque morceau de trait, mais comme je m'en doutais cela ne marche pas car Eclipse m'affiche un joli message rouge auquel je ne comprend rien :

    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
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: dash lengths all zero
    	at java.awt.BasicStroke.<init>(Unknown Source)
    	at Ligne.dessiner(Ligne.java:118)
    	at Fenetre.paintComponent(Fenetre.java:37)
    	at javax.swing.JComponent.paint(Unknown Source)
    	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    	at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
    	at javax.swing.RepaintManager.paint(Unknown Source)
    	at javax.swing.JComponent._paintImmediately(Unknown Source)
    	at javax.swing.JComponent.paintImmediately(Unknown Source)
    	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    	at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
    	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
    	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Comment faut-il faire en fin de compte pour tracer un trait en pointillés?

    Sur le site de Java, ils mettent en exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final static float dash1[] = {10.0f};
    final static BasicStroke dashed = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f);
    g2.setStroke(dashed);
    A quoi correspondent les 10.0f et cie ?

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 816
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 816
    Points : 7 648
    Points
    7 648
    Par défaut
    Salut,

    Citation Envoyé par boboh0 Voir le message
    mais je ne sait pas du tout à quoi correspond les paramètres.
    ... et c'est pour ça que Sun a inventé la Javadoc...

    Javadoc BasicStroke

    Sans parler de toute l'info disponible sur le net...

    Citation Envoyé par boboh0 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final static float dash1[] = {10.0f};
    final static BasicStroke dashed = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f);
    g2.setStroke(dashed);
    A quoi correspondent les 10.0f et cie ?
    le 10.0f est le mitter limit, donc associé au BasicStroke.JOIN_MITER ça permet de limiter la longueur du "mitter" pour ne pas que ça aille à perpet pour les petits angles.
    Pour le "cie", le tableau dash1 définit le motif de tes pointillés (tu mets à la suite longueur de noir, longueur de blanc, longueur de noir, longueur de blanc, etc), et le 0.0f c'est le décalage entre le début de ta ligne et le début de l'application du motif de pointillé.

    en images ici

Discussions similaires

  1. courbe en pointillés en (très) long traits
    Par Bloodista dans le forum MATLAB
    Réponses: 4
    Dernier message: 15/04/2011, 14h52
  2. Traits cachés en pointillés ?
    Par rambc dans le forum OpenGL
    Réponses: 10
    Dernier message: 15/05/2009, 20h37
  3. [Tkinter] trait pointillé
    Par airod dans le forum Tkinter
    Réponses: 2
    Dernier message: 08/02/2006, 17h54
  4. [VB.NET] windows form traits
    Par DG JohnJohn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 16h05
  5. Trait pas beau
    Par Steph82 dans le forum OpenGL
    Réponses: 12
    Dernier message: 07/12/2003, 01h26

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