Code de dessein

Bonjour,
J'aimerai avoir le code permetant de dessiner une droite en java (le code de drawLine() de java)
En fait je vourais qu'une image se deplace sur une droite quelconque mais je n'arrive pas à faire évoluer les coordonnées des positions

Merci
Configuration: Windows XP Internet Explorer 6.0

6 réponses

  1. Salut,
    // dessiner un segment de droite en java
    Package Graphics, méthode drawLine((int x1, int y1, int x2, int y2).
    x1 et y1 sont les coordonnées début de la ligne.
    x2 et y2 sont les coordonnées fin de la ligne.
    Exemple:

    // si public void paint(Graphics g):
             g.setColor(Color.black); //couleur différente du fond bien entendu
             g.drawLine(position x1, position y1, position x2, position y2);
    


    Cordialement,

    Dan

    Ps,

    Il serait bien que tu nous donnes la partie du code concerné pour qu'on puisse t'aider...
    1. Merci danimo
      Mais ce que je veux c'est ce qui se cache derriere la fonction
      g.drawLine(position x1, position y1, position x2, position y2);

      le code de cette fonction quoi?

      cordialement
      1. Re,

        C'est ce que je t'ai donné!!!

        Mais si tu veux un exemple le voici:
           import javax.swing.*;
           import java.awt.*;
        	
            public class TracerLigne extends JFrame
           {
              private int x, y;
           
               public TracerLigne()
              {
                 super("TRACER DEUX LIGNES DANS UN RECTANGLE."); // titre
              
                 setSize(538, 248); // dimensions frame
                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 setVisible(true);
              }
           
               public void paint(Graphics g)
              {
                 super.paint(g);
              
                 x = 0;
                 y = 39;  // premiere ligne de la zone de dessin (LE RECTANGLE)		
              
              
              // Le rectangle dans lequel sera inscrite la ligne
                 g.setColor(Color.lightGray);
              // g.fillRoundRect(x +18, y, 502, 190); // sans angles arrondis
                 g.fillRoundRect(x +18, y, 502, 190, 15, 15); // avec angles arrondis
                 
              
                 int posX1 = 40;
                 int posY1 = 100;
                 int posX2 = 240;
                 int posY2 = 100; 
              
              // tracer une ligne
                 g.setColor(Color.black);
                 g.drawLine(posX1, posY1, posX2, posY2);
                 
              	
                 
                 posX1 = 40;
                 posY1 = 210;
                 posX2 = 510;
                 posY2 = 52; 
              
              // tracer une autre ligne
                 g.setColor(Color.red);
                 g.drawLine(posX1, posY1, posX2, posY2);
              }
           
               public static void main(String[] args)
              {
                 new TracerLigne();
              }
           }
        


        Dan
        1. Bien je vais être plus claire
          je voudrais faire une annimation qui consiste à faire une réprésentation d'un envoi de message d'un paste à un autre. En fait mes postes sont des images d'un ordinateur que j'ai dessiner sur un JPannel et je voudrais que l'image d'une enveloppe se deplace du poste1 au poste2 quelque soit leurs positions sur le pannel
          par exemple si poste1 est en position(10,50) et poste2 en position(200,500); je dois pouvoir deplacer mon enveloppe de position(10,20) à position(200,500) en incrémentant les coordonnées de position(10,20) jusqu'a position(200,500).
          Merci d'avence pour vos réponses
          1. danimo votre exemple marche bien mais je voudrais savoir comment on peut augmenter l'epaisseur se la ligne.
            et pour revenir à mon probleme est ce que vous pouver dessiner un fillOval(x1,y1,x2,y2) le long de vos droite en faisent varier à l'aide d'une boucle les valeur de x1 et y1 jusqu'a ce quelle soit egale ou superieure à x2,y2

            Merci
            1. Re,

              Pour les lignes épaisses et un ovale (fixe pour l'instant) sur chacune des lignes, voici un exemple:

                 import javax.swing.*;
                 import java.awt.*;
              	
                  public class TracerLigne extends JFrame
                 {
                    private int x, y;
                    
                    private static Font font14;
                 
                     public TracerLigne()
                    {
                       super("TRACER DES LIGNES DANS UN RECTANGLE (+ un oval vert)."); // titre
                    
                       setSize(538, 248); // dimensions frame
                       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                       setVisible(true);
                    }
                 
                     public void paint(Graphics g)
                    {
                       super.paint(g);
                    
                       x = 0;
                       y = 39;  // premiere ligne de la zone de dessin (LE RECTANGLE)
                       
                    							
                    
                    
                    // Le rectangle dans lequel sera inscrite la ligne
                       g.setColor(Color.lightGray);
                    // g.fillRoundRect(x +18, y, 502, 190); // sans angles arrondis
                       g.fillRoundRect(x +18, y, 502, 190, 15, 15); // avec angles arrondis
                       
                    
                       int posX1 = 40;
                       int posY1 = 100;
                       int posX2 = 240;
                       int posY2 = 100; 
                    
                    // tracer une ligne épaisse (horizontale et noire)
                       g.setColor(Color.black);
                       g.fillRect(posX1, posY1, 200, 4); // ligne horizontale
                    	                                  // il suffit de faire un rectangle
                    												 
                       posX1 = 470;
                       posY1 = 100;
                       posX2 = 250;
                       posY2 = 60; 
                    
                    // tracer une autre ligne épaisse (verticale et bleue)
                       g.setColor(Color.blue);
                       g.fillRect(posX1, posY1, 4, 110); // ligne verticale
                    	                                  // il suffit de faire un rectangle
                       
                       posX1 = 40;
                       posY1 = 210;
                       posX2 = 510;
                       posY2 = 52; 
                    
                    // tracer une autre ligne (oblique et rouge)
                       g.setColor(Color.red);
                       g.drawLine(posX1+=1, posY1+=1, posX2+=1, posY2+=1); // on trace plusieures lignes
                       g.drawLine(posX1+=1, posY1+=1, posX2+=1, posY2+=1);
                       g.drawLine(posX1+=1, posY1+=1, posX2+=1, posY2+=1);
                       
                      
                      // un oval >> ligne noire
                       int xOval = 130;
                       int yOval = 80;
                       
                       g.setColor(Color.green);  // fond
                       g.fillOval(xOval, yOval, 10, 20);	
                       
                      // un oval >> ligne rouge
                       xOval = 322;
                       yOval = 95;
                       
                       g.setColor(Color.green);  // fond
                       g.fillOval(xOval, yOval, 10, 20);
                       
                      // un oval >> ligne bleue
                       xOval = 450;
                       yOval = 200;
                       
                       g.setColor(Color.green);  // fond
                       g.fillOval(xOval, yOval, 20, 10);
                    	
                    	
                    }
                 
                     public static void main(String[] args)
                    {
                       new TracerLigne();
                    }
                 }
              


              Cordialement,

              Dan