Bonjour,

J'essaye de faire un outil pinceau dans un logiciel de dessin. J'ai réalisé ce petit code, je stocke tous les points de la fonction dragged dans une liste et j'affiche des que l'utilisateur relâche le clique droit de la souris.
Le résultat est satisfaisant qd on bouge doucement la souris, par contre dès que c'est rapide les points sont très écartés.


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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.LinkedList;
import java.util.List;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class WhiteBoard extends JPanel implements MouseMotionListener, MouseListener{
 
	LinkedList<Point> list = new LinkedList<Point>();
	List<String> actionsEffectuees = new LinkedList<String>();
 
 
	public WhiteBoard(){		
		setLayout(new BorderLayout());	
		addMouseListener(this);
		addMouseMotionListener(this);
 
	}
 
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
 
		for (int i=0; i<list.size(); i++){				
				Point p1 = (Point) list.get(i);
				g.setColor(Color.BLACK);
				g.drawLine(p1.x, p1.y, p1.x, p1.y);
			}
	}
 
	@Override
	public void mouseDragged(MouseEvent e) {
		list.add(e.getPoint());
	}
 
 
	@Override
	public void mouseMoved(MouseEvent arg0) {
		// TODO Auto-generated method stub
 
	}
 
 
	@Override
	public void mouseClicked(MouseEvent e) {
 
	}
 
 
	@Override
	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
 
	}
 
 
	@Override
	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
 
	}
 
 
 
	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		list.add(e.getPoint());
	}
 
 
 
	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		repaint();
	}
 
	private static void createAndShowGUI() {
 
 
		JFrame fen = new JFrame("WhiteBoard");	
		WhiteBoard wb = new WhiteBoard();
		fen.add(wb);
		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fen.setSize(new Dimension(800,600));
		fen.setVisible(true);		
		fen.setLocationRelativeTo(fen.getParent());
	}
 
	public static void main(String[] args) {	
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
	}
}
Avez vous une idée?

Merci