Superposition d image avec allegro

Signaler
Messages postés
10
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
17 février 2006
-
Messages postés
69
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
15 septembre 2009
-
Bonjour,

je voudrais savoir si il est possible lorsque l'on programme avec Allegro de "supersposer" des bitmaps, c'est a dire en fait que je voudrais pouvoir afficher un bitmap par dessus un autre et pouvoir le faire disparaitre a tout moment sans que cela influe sur le bitmap d'en dessous (c'est a dire que si certaines choses on ete faite par l'utilisateur avant que le nouveau bmp s affiche elle ne seront pas perdues..)

Merci d avance

Guilt

2 réponses

Messages postés
62
Date d'inscription
samedi 5 mars 2005
Statut
Membre
Dernière intervention
11 avril 2006

Je ferai ainsi :



BITMAP *buffer,*bmp1,*bmp2;



...



buffer = create_bitmap(320,240); // En fonction de ta resolution...

bmp1 = load_bitmap("bmp1.tif",NULL); //TIF juste pour l'exemple, de même que ce pourrait être en bmp...

bmp2 = load_bitmap("bmp2.bmp",NULL);



while(! key[KEY_ESC])

{

clear_bitmap(buffer);

blit(bmp1,buffer,0,0,x,y,bmp1->w,bmp1->h);

blit(bmp2,buffer,0,0,x,y,bmp2->w,bmp2->h);

/*

Les coordonnées x et y doivent être egales, ainsi la bitmap copiée
l'est au même endroit que la seconde... il me semble qu'ainsi bmp2 est
au dessus de bmp1... Pour la transparence, voir les fonctions
fade_in();/fade_out(); (Jamais utilisées, je decouvre)...

*/

blit(buffer,screen,0,0,0,0,buffer->w,buffer->h);

}



Je ne promet rien, mais je crois que c'est juste... Je suis debutant, en prog et en allegro, alors bon...

Je ne sais pas si faire

draw_sprite(buffer,bmp1,x,y);

draw_sprite(buffer,bmp2,x,y);

eut été mieux, je ne suis pas renseigné quant à la vitesse d'execution
de ces fonction, ainsi que leur demande en ressource systeme (je dois
m'avancer pas mal là ^^ ).



Bref, j'espère avoir été utile ;)
Messages postés
69
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
15 septembre 2009

Svp aidez moi j'ai aussi le même poblème :

je voudrais pouvoir faire plusieurs buffers ; buffer_map , buffer_perso ,et ensuite tout

copier dans un "total_buffer" que j'affiche à l'écran , genre :



BITMAP *total_buffer,*buffer_map,*buffer_perso ;



int main()

{

total_buffer = create_bitmap(800,600);

buffer_map = create_bitmap(800,600);

buffer_perso = create bitmap(800,600);



while(!key[KEY_ESC])//If the user hits escape, quit the program

{

blit(buffer_map ,buffer ,0,0,0,0,buffer_map->w,buffer_map->h);

blit(buffer_perso ,buffer,0,0,0,0,buffer_perso->w,buffer_perso->h);

blit(total_buffer,screen ,0,0,0,0, 800,600);

}



}

END_OF_MAIN()



Pourtant cela ne marche pas , j'aimerais que tous ces buffers soit
supperposé à lécran , malheureusement le buffer_perso bouffe celui du
buffer_map et a l'écran ne s'affiche que le perso ! j'ai essayé
de mettre en commentaire le blit blit(buffer_perso
,buffer,0,0,0,0,buffer_perso->w,buffer_perso->h); et bien sur la
map s'est affichée à l'écran .

Aidez Moi svp !!!