2016-05-30 7 views
0

В моей программе я загружаю растровое изображение из файла (источник), и я хочу скопировать его и отобразить копию на экране при каждом нажатии кнопки мыши. Я вставил копию и отображение растрового изображения, но это не сработало. Отображение оригинальных работ в моем коде.allegro5, C - отображает копию растрового изображения в цикле

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(); 
     } 
    } 

ответ

0

Я нашел решение уже, чтобы сделать глубокий-копию растрового изображения: ALLEGRO_BITMAP * al_clone_bitmap (BITMAP * источник) функция может быть использована.

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(); 
    } 
}