Bonjour,

je dispose d'un JComponent de 17*17 pixels où j'ai redéfinie la méthode paintComponent() pour dessiner un arc de cercle à l'intérieur de ce composant.

J'arrive bien à dessiner mes deux types d'arc de cercle (en changeant le couleur) mais je n'arrive pas à détecter la zone à l'intérieur de mes deux arcs de cercles pour dessiner en blanc.

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
23
24
25
 
protected void paintComponent(Graphics g) {
     Graphics2D g2 = (Graphics2D g)
 
     // Activation de l'anti-aliasing
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 
     // Dessin de l'arc de cercle extérieur de 1 pixel
     g2.setColor(Color.BLACK);
     g2.setStroke(new BasicStroke(1));
     g2.drawArc(0, -getHeight() - 1, getWidth()*2, getHeight()*2, 180, 90);
 
     // Dessin du deuxième arc de cercle de 4 pixels
     g2.setStroke(new BasicStroke(5));
     g2.setColor(new Color(102, 51, 0));
     Arc2D arc = new Arc2D.Float(2, -getHeight() - 1, getWidth()*2 - 2, getHeight()*2 - 2, 180, 90, Arc2D.OPEN);
     g2.draw(arc);
 
     // Application de la couleur blanche dans la zone formée par les
     // deux arcs de cercles...
     g2.setColor(Color.WHITE);
     // .... ???
     // .... ??? Comment peut-on faire ?
 
}
J'ai bien essayé de récupérer l'objet Shape du deuxième arc, de construire un polygone puis une aire pour appliquer ma couleur blanche à l'intérieur des deux arcs mais lorsque je récupère l'objet Shape du deuxième arc, il me prend pas en compte la taille de mon trait (g2.setStroke()...).

Comment faire ?
Avez-vous une idée ?

Merci beaucoup,
F.