как сделать фон в аллегро с ++?

я новичок в программировании с помощью allegro, и я хочу изменить цвет фона моих программ с чего-то более приятного, чем черный ха-ха :) может кто-нибудь помочь?

и просто для справки о том, что я делаю

#include <allegro.h>

BITMAP* buffer;
BITMAP* bmp;
int cursor_x = 20;
int cursor_y = 20;

int getMouseInfo(){
     if(mouse_b & 1){
                  cursor_x = mouse_x;
                  cursor_y = mouse_y;
      return 1;
     }
  return 0;
}
void updateScreen(){

     show_mouse(NULL);
     circlefill ( buffer, cursor_x, cursor_y, 60, makecol( 0, 255 , 0));
     draw_sprite( screen, buffer, 0, 0);  
}
int main(){

    allegro_init();
    install_mouse();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);
    rectfill (  

    buffer = create_bitmap( 640, 480);     


    show_mouse(screen);        

    while( !key[KEY_ESC])
 {
  int switcher=1;
  while(getMouseInfo()) 
  { 
   updateScreen();
   if(getMouseInfo()==0) switcher=0;
  }
  if(switcher==0) show_mouse(screen);

    }

 return 0; 
}
END_OF_MAIN();

person andy    schedule 09.07.2011    source источник
comment
В Allegro 4 вы обычно будете работать с созданным вами закадровым буфером растрового изображения. В конце концов вы обнаружите, что каждый кадр вам нужно очищать и перерисовывать кадр... так что нет никакой дополнительной работы по очистке его до чего-то другого, кроме черного.   -  person Matthew    schedule 09.07.2011


Ответы (2)


Чтобы создать растровое изображение фона, попробуйте следующее:

/* Make a bitmap in RAM. */
  BITMAP *bmp = create_bitmap(SCR_X, SCR_Y);

затем попробуйте это, чтобы очистить bmp для другого цвета:

  /* Clear the screen to red. */
  clear_to_color(bmp, makecol(255, 0, 0));

или это для загрузки растрового изображения из файла:

bmp = load_bitmap("image.pcx", palette);

Затем вам просто нужно скопировать это растровое изображение с вашим экраном - вот так:

  /* Blit bmp on the screen. */
  blit(bmp, screen, 0, 0, 0, 0, bmp->w, bmp->h);
person Maciej Oziębły    schedule 09.07.2011
comment
clear_bitmap(bmp) является синонимом вызова clear_to_color(bmp, makecol(0, 0, 0)). Звонить clear_to_color(...) сразу после clear_bmp(...) — пустая трата времени. Просто позвоните clear_to_color(...). Кроме того, просто вызовите BITMAP* bmp = load_bitmap("image.pcx", palette), вам не нужно сначала создавать растровое изображение в ОЗУ. - person Casey; 23.08.2011

Нарисуйте прямоугольник размером с экран того цвета, который вы хотите использовать для фона. Или просто используйте clear_bitmap, чтобы очистить экран.

person Nicol Bolas    schedule 09.07.2011
comment
да, я надеялся, что мне не придется рисовать прямоугольник - person andy; 09.07.2011