Bonjour a tous. Je réalise un jeu de coloriage de type paint. Pour cela j'ai utilisé les codes suivants.


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
Pdessin.addMouseListener(new MouseListener()
		{
			public void mousePressed(MouseEvent e)
			{
				x[i]=e.getX()+3;
				y[i]=e.getY()+235;
				if(y[i] < 136) y[i] = 136; 
				if(x[i] > 642) x[i] = 642;
				i++;	
				repaint();       
			}
			public void mouseReleased(MouseEvent e)
			{
				x[i]=0;
				y[i]=0;
				i++;
				repaint();
			}
			public void mouseClicked(MouseEvent evt){ }
			public void mouseEntered(MouseEvent evt){ }
			public void mouseExited(MouseEvent evt){ }
		});
		Pdessin.addMouseMotionListener(new MouseMotionListener()
		{
			public void mouseDragged(MouseEvent evt)	
			{					
				x[i] = evt.getX()+8;       
				y[i] = evt.getY()+80;  
				if(y[i] < 100) y[i] = 100; 
				if(x[i] > 642) x[i] = 642; 
				i++;		   
				repaint();       
			}
			public void mouseMoved(MouseEvent evt){ }	
		});

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
public void paint(Graphics g)
	{
		Graphics2D g2D = (Graphics2D)g;
		switch(couleur)
		{
		case 0 : g2D.setColor(Color.black); break;
		case 1 : g2D.setColor(Color.red); break;
 
		}
		switch(trait)
		{ 
		case 1 : g2D.setStroke(new BasicStroke(2.5f)); break;
		case 2 : g2D.setStroke(new BasicStroke(5.0f)); break;
		}	
		for(int j=0 ; j<i ; j++)
			if((x[j]+y[j] != 0) && (x[j+1]+y[j+1] !=0))
					g2D.drawLine(x[j], y[j], x[j+1], y[j+1]);
	}
Mes problèmes sont les suivants:
- Le premier "clic" pour dessiner se traduit par un long trait vertical non désiré.
- Ce que je dessine est à environ 2cm au dessus du curseur.

Je n'arrive pas a comprendre d'où vient mon problème. Merci de m'éclairer à ce sujet. bonne soirée