Dans votre implémentation de JPanel, les rectangles disparaissent car la méthode paint() écrase les dessins précédents. Pour éviter cela, nous modifions notre approche :
Au lieu de dessiner directement sur le JPanel, nous utilisons une BufferedImage (canvasImage) comme surface de peinture. Cela nous permet de modifier l'image de manière permanente sans affecter les dessins précédents.
Voici une méthode paint() modifiée qui utilise canvasImage pour dessiner :
@Override
public void paint(Graphics g) {
super.paint(g); // Handle inherited painting tasks
Graphics2D bg = (Graphics2D) g;
bg.drawImage(canvasImage, 0, 0, this);
}
Initialisez canvasImage dans votre constructeur JPanel comme ceci :
canvasImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Et définir son contexte graphique pour dessin :
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(Color.WHITE);
cg.fillRect(0, 0, width, height);
Maintenant, votre méthode DrawRect() peut modifier directement canvasImage :
public void DrawRect(int x, int y, int size, Color c) {
Graphics2D cg = canvasImage.createGraphics();
cg.setColor(c);
cg.fillRect(x, y, size, size);
}
Cette approche offre plusieurs avantages :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3