[java]drawArc

domxaline -  
 domxaline -
Bonjour,
j'ai besoin une explication
pour dessiner drawArc:
          g.drawArc(100, 20, 100, 90, 0, 135);
	  g.drawArc(100, 140, 200, 90, 20, 150);

j'ai compris les paramètres x,y,width,height;
mais je ne comprend pas les parametres suivantes
startAngle,arcAngle
quelqu'un peut m'expliquer avec un dessin svp

5 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    C'est pour ce genre de questions qu'il y a une documentation exhaustive en Java :

    public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)

    Je cite :

    "The resulting arc begins at startAngle and extends for arcAngle degrees, using the current color. Angles are interpreted such that 0 degrees is at the 3 o'clock position. A positive value indicates a counter-clockwise rotation while a negative value indicates a clockwise rotation."

    Mais le plus simple pour comprendre comment ça marche c'est de faire quelques tests dans un coin pour tester différentes valeurs.
    0
  2. domxaline
     
    " startAngle - the beginning angle.
    arcAngle - the angular extent of the arc, relative to the start angle."

    j'ai besoin un dessin svp
    si ça vous dérange pas
    0
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    Comme je l'ai dis, "le plus simple pour comprendre comment ça marche c'est de faire quelques tests dans un coin pour tester différentes valeurs."

    Exemple :

    import java.awt.Graphics;
    import java.awt.GridLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JSpinner;
    import javax.swing.SpinnerNumberModel;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    
    public class TestArc
    {
        public static void main(String[] args)
        { 
            // Frame 1
            
            final JSpinner startAngle = new JSpinner(new SpinnerNumberModel(0, -360, +360, 5));
            final JSpinner arcAngle = new JSpinner(new SpinnerNumberModel(0, -360, +360, 5));
            
            final JFrame frame1 = new JFrame();
            frame1.setLayout(new GridLayout(2,2));
            frame1.add(new JLabel("startAngle"));
            frame1.add(startAngle);
            frame1.add(new JLabel("arcAngle"));
            frame1.add(arcAngle);
            frame1.pack();
            frame1.setLocationRelativeTo(null);
            frame1.setVisible(true);
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            // Frame 2
            
            final JFrame frame2 = new JFrame()
            {
                @Override
                public void paint(Graphics g)
                {
                    super.paint(g);
                    int border = 40;
                    g.drawRect(border,border,getWidth()-2*border,getHeight()-2*border);
                    g.fillArc(border,border,getWidth()-2*border,getHeight()-2*border,(int) startAngle.getValue(),(int) arcAngle.getValue());
                }
            };
            frame2.setBounds(frame1.getX()+frame1.getWidth(),frame1.getY(),200,200);
            frame2.setVisible(true);
            frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            // Events
            
            ChangeListener listener = new ChangeListener()
            {
                public void stateChanged(ChangeEvent e)
                {
                    frame2.repaint();
                }
            };
            
            startAngle.addChangeListener(listener);
            arcAngle.addChangeListener(listener);
        }
    }
    0
  4. domxaline
     
    il y une erreur dans le prg la ligne suivant est soulingé
    g.fillArc(border,border,getWidth()-2*border,getHeight()-2*border,(int) startAngle.getValue(),(int) arcAngle.getValue());
    Cannot cast from Object to int
    
    	at TestArc.main(TestArc.java:40)
    
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      C'est parce que tu compiles en Java 6 (ou moins...) il serait bien que tu te mettes au Java 7 !

      g.fillArc(border,border,getWidth()-2*border,getHeight()-2*border,(Integer) startAngle.getValue(),(Integer) arcAngle.getValue());
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. domxaline
     
    ok maintenant je comprend mieux
    merci beaucoup
    0