[java]drawArc

Fermé
domxaline - 17 janv. 2013 à 11:12
 domxaline - 17 janv. 2013 à 18:11
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

A voir également:

5 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
17 janv. 2013 à 14:29
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
" 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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
17 janv. 2013 à 17:15
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
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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
17 janv. 2013 à 17:53
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ok maintenant je comprend mieux
merci beaucoup
0