2016-05-30 6 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(); 
    } 
} 
関連する問題