java double buffer ne s'efface pas


Je fais un projet avec double mise en mémoire tampon. Quand je peins, il peint simplement sur les anciennes couches, mais je dois les effacer. Repaint () n'a pas fonctionné, mais je suppose que quelque chose d'aussi simple est la réponse.

Des idées?

Ajout de code, et maintenant il disparaît, mais il efface la couleur d'arrière-plan.

 public void paint(Graphics g)
{

super.paint(buffer);


for(Projectile p: projectiles)
drawRectImage(buffer, p.image, p.getRectangle());

}

Author: user2956947, 2014-05-29

1 answers

Suggestions:

  • S'il s'agit d'une interface graphique Swing, ne remplacez pas la méthode paint, mais remplacez plutôt la méthode paintComponent. Cela n'aidera pas votre problème actuel, mais aidera à prévenir les problèmes futurs, y compris les problèmes de peinture des bordures et des composants enfants.
  • Si Swing (encore une fois, vous ne dites pas), assurez-vous que votre composant de peinture étend JPanel, pas JComponent, car JPanel est opaque et remplit son rectangle d'arrière-plan dans sa super méthode.
  • Si c'est pas Swing, alors vous devriez fortement envisager de passer de AWT à Swing.
  • Si vous êtes toujours bloqué, alors oui, vous voudrez créer et publier un exemple de programme minimal . S'il vous plaît vérifier le lien.
 3
Author: Hovercraft Full Of Eels, 2017-05-23 11:57:14