Bonjour,

j'essaie de faire un peu de java2d et j'ai un problème que je n'arrive pas à résoudre.

J'ai un dessin dans lequel j'ai un octogone et je veux faire un trait à l'intérieur (ou plutôt un rectangle). Je voudrais que quelque soit la taille du trait, on n'affiche que la partie qui est à l'intérieur de l'octogone.

j'ai regardé un peu sur le net et apparemment la méthode Clip() répond à ma question.
Cependant, je n'est pas eu le résultat que je voulais.

Voici mon code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
public class VuePiece extends JPanel {
 
	// Déclarer 2 tableaux pour les coordonnées
		int x[], y[];
		public void init()
		{
			// Définir la couleur de fond
			setBackground(Color.gray);
			// Définir les coordonnées de chaque point du polygone
			x = new int[8];
			y = new int[8];
 
			x[0] = 0;  y[0] = 40;
			x[1] = 40;  y[1] = 0;
			x[2] = 80; y[2] = 0;
			x[3] = 120; y[3] = 40;
			x[4] = 120; y[4] = 80;
			x[5] = 80; y[5] = 120;
			x[6] = 40;  y[6] = 120;
			x[7] = 0;  y[7] = 80;
		}
 
		public void paint(Graphics g)
		{
			Graphics2D g2 = (Graphics2D) g; 
			init();
			Polygon polygone = new Polygon(x,y,x.length);
			g.setColor(Color.black);
			g.drawPolygon(polygone);
 
			AffineTransform rotation = new AffineTransform();
			rotation.concatenate(AffineTransform.getRotateInstance(3*(Math.PI)/4,60,60));
			g2.transform(rotation);
			g2.clip(polygone);
 
			Rectangle rect= new Rectangle(55, -10, 10, 130); 
			g2.fillRect(rect.x, rect.y, rect.width, rect.height);
		}
}
et voici le résultat:
Nom : Sans titre.png
Affichages : 189
Taille : 2,1 Ko

Voici le résultat si je supprime la ligne g2.clip(polygone);
Nom : Sans titre2.png
Affichages : 193
Taille : 2,1 Ko

Comme vous le voyez, avec le clip() c'est un peu mieux mais sa dépasse quand même.
Je voudrais que le trait ne dépasse pas du tout et je ne sais pas si je suis sur la bonne voie.

Merci pour vos réponses.