Arrière plan

Pallas4 Messages postés 14 Date d'inscription dimanche 5 janvier 2003 Statut Membre Dernière intervention 11 mai 2005 - 11 mai 2005 à 18:44
PallasCat Messages postés 1 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 12 mai 2005 - 12 mai 2005 à 20:03
Bonjour



j'ai un programme qui est comme suit :

tous les tant millisecondes l'affichage est réaffiché.



Cet affichage est consstitué d'images en forme de cases et en forme de sprite.



La taille de chaque dépend de paramètres.

les cases sont affichées de manière à recouvrir toute la fenêtre.



Ensuite au dessus de ces images on affiche des sprites.





le pb est que comme il faut afficher en arrière plan les cases, que les
cases sont affichées dans les 100 fois, qu'il faut les redimensionner,
et ce à chaque fois ça créé un pb d'affichage de certain composants.



Bref j'aimerais savoir comment faire un arrière plan qui ne s'affiche
qu'une fois la première fois de l'appelle à la fonction paint (cette
fionction est appellée à partir d'une autre classe)

et comment à chaque image effacer tout ce qui n'est pas de l'arrière
plan avant de réafficher les sprites avec leurs nouvelles positions.

Merci

3 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
12 mai 2005 à 08:45
Utilise une image en arriere plan, formee par toute tes images de cases et de sprite,

ca ira plus vite, tu la reconstruit qd besoin est.

Tu peux aussi ne raffraichir que certaines parties visible/changeante.

Mais si tu veux des conseils plus pointu, ce serait plutot a Neodante ou Godconan de te repondre, moi je suis plus 3D que 2D...


-------------------
dams
-------------------
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
12 mai 2005 à 09:35
Je penses que ce code pourrait t'aider :

public void paintComponent( Graphics g )
{
Dimension d = getSize();
// si les donne on changer
if( triggerDrawFired )
{ // on crer l image ds lakel on va dessiner
offScreen = createImage( d.width, d.height );

// on fait notre dessin
drawOffScreen( (Graphics2D)offScreen.getGraphics(), d );
}
// maintenant tous ce qui suis sera dessiner par dessu le graph
// sans que celui ci soit redessiner
if ( offScreen != null ) // maintenant on affiche notre image
g.drawImage( offScreen, X, Y, this );
}
C'est un systeme de double buffering si je ne me trompe.
Il ne redessine que lorsqu'il faut.

cid019
0
PallasCat Messages postés 1 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 12 mai 2005
12 mai 2005 à 20:03
je ne comprends pas

mes pb sont en commentaires

public void paintComponent( Graphics g ) /* ça ne devrait pas être paint au lieu de painComponent ?*/

{

Dimension d = getSize();



if( triggerDrawFired ) // c'est quoi cet objet ?

{


offScreen = createImage( d.width, d.height );



//
on fait notre
dessin



drawOffScreen( (Graphics2D)offScreen.getGraphics(), d );// c'est
quoi cette méthode ? :S

}

if ( offScreen != null ) //


g.drawImage( offScreen, X, Y, this
);


}



Ps changé de psuedo à cause d'un pb de mail et de mot de passe
0
Rejoignez-nous