2016-05-30 3 views
0

Dans mon programme, je charge bitmap à partir du fichier (source) et je veux le copier et afficher la copie sur l'écran chaque fois que vous appuyez sur le bouton de la souris. J'ai collé la copie et l'affichage de bitmap, mais cela ne fonctionne pas. Afficher les œuvres originales dans mon code.allegro5, C - afficher la copie de bitmap en boucle

while(true) 
    { 
     ALLEGRO_EVENT event; 
     al_wait_for_event(queue, &event); 

     if(event.type == ALLEGRO_EVENT_KEY_DOWN && event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) 
     { 
      destroy(queue, source, display); 
      al_destroy_bitmap(copy); 
      return 0; 
     } 

     if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) 
     { 
      if(copy) 
      al_destroy_bitmap(copy); 

      copy = al_create_bitmap(al_get_bitmap_width(source), al_get_bitmap_height(source)); 

      al_set_target_bitmap(copy); 
      al_draw_bitmap(source, 0, 0, 0); 
      al_flip_display(); 
     } 
    } 

Répondre

0

J'ai trouvé une solution déjà, faire une copie en profondeur de bitmap: ALLEGRO_BITMAP * Fonction al_clone_bitmap (BITMAP * source) peut être utilisé.

while(true) 
{ 
    ALLEGRO_EVENT event; 
    al_wait_for_event(queue, &event); 

    if(event.type == ALLEGRO_EVENT_KEY_DOWN && event.keyboard.keycode == ALLEGRO_KEY_ESCAPE) 
    { 
     destroy(queue, source, display); 
     al_destroy_bitmap(copy); 
     return 0; 
    } 

    if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) 
    { 
     if(copy) 
     al_destroy_bitmap(copy); 

     copy = al_clone_bitmap(source); 
     al_draw_bitmap(copy, 0, 0, 0); 
     al_flip_display(); 
    } 
}