Voilà, suite logique de ce topic : http://forum.hardware.fr/hardwaref [...] 4253-1.htm
Je suis toujours en train d'essayer de mettre en place plusieurs layers graphiques de dessin.
J'ai donc plusieurs couples BufferedImage/Graphics2D sur lesquels je fais plein de belles choses graphiques, et au final, je les recopie toutes sur une seule et même image, que je paint ensuite sur le graphics du component.
Graphismes orientés jeu : j'ai un layer de décors, un fond statique que je dessine une fois et qui ne bouge plus, et un layer animé où je fais évoluer des sprites.
Mais ce dernier layer, tant que je dessine dessus, tout va bien, mais je ne sais pas le nettoyer... en fait, clearRect ne fait rien d'autre que d'afficher une couleur sur un zone choisie, mais moi j'ai besoin de la transparence. Je voudrais non pas réafficher une nouvelle couleur mais le vider.
Image.flush() ne fait rien, je crois que ça vient de là :
Citation :
public abstract void flush()
Flushes all resources being used by this Image object. This includes any pixel data that is being cached for rendering to the screen as well as any system resources that are being used to store data or pixels for the image. The image is reset to a state similar to when it was first created so that if it is again rendered, the image data will have to be recreated or fetched again from its source.
This method always leaves the image in a state such that it can be reconstructed. This means the method applies only to cached or other secondary representations of images such as those that have been generated from an ImageProducer (read from a file, for example). It does nothing for off-screen images that have only one copy of their data.
|
Donc, évidemment, en écrasant l'image avec une nouvelle de la même taille, ça marche mais comme c'est censé tourner à 50 fps, bof bof.
Comment puis-je nettoyer mon layer comme la touche "suppr" dans photoshop, qui au lieu de couvrir la zone en blanc, la vide en n'y laissant que du #00000000 ?
d'avance merci