Ce code est pour dessiner sur un JPanel. Dans le paintComponent(Graphics)
j'essaie de dessiner des courbes par répétées Graphics2D#fillOval(x, y, with, height)
.Comment dessiner une courbe continue d'ovales répétés sur le déplacement rapide du curseur de la souris?
L'application fonctionne correctement, et lorsque je fais glisser le curseur de la souris lentement; il dessine une courbe continue comme j'ai besoin. Mais quand j'accélère le déplacement du curseur de la souris, le résultat est des points séparés et non une courbe continue.
Alors, comment faire pour dessiner une courbe continue même si j'accélère le glissement?
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
public class Painter extends JPanel {
int x, y;
ArrayList<Point> points;
public Painter() {
setBackground(Color.white);
points = new ArrayList<>();
MouseHandler listener = new MouseHandler();
this.addMouseMotionListener(listener);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(600, 600);
}
private class MouseHandler extends MouseAdapter implements MouseMotionListener {
@Override
public void mouseDragged(MouseEvent e) {
Point point = new Point(e.getX(), e.getY());
points.add(point);
repaint();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
for (Point point : points) {
g2d.fillOval(point.x, point.y, 15, 15);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame f = new JFrame();
f.setContentPane(new Painter());
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}
Dessiner un ovale du point dans une ligne au point suivant – MadProgrammer
S'il vous plaît voir modifier pour répondre. –