Allegro 4.2.1, удаление цвета фона bmp - PullRequest
1 голос
/ 18 февраля 2010

Я строил игру в allegro 4.2.1 и мне нужна помощь, чтобы удалить определенный цвет, чтобы сделать его невидимым. Цвет фона: (255, 0, 255). Я был на следующих сайтах, но они мне мало помогли:

http://www.allegro.cc/forums/thread/599210, http://www.cpp -home.com / учебники / 258_1.htm

Если бы кто-нибудь мог дать мне пример, я был бы очень рад.

1 Ответ

1 голос
/ 01 марта 2010

Для включения прозрачных пикселей необходимо выполнить следующие действия:

  • Позвоните set_color_depth(32) перед вызовом set_gfx_mode()

  • Загрузитеизображения после вызова set_gfx_mode()

  • Используйте masked_blit() или draw_sprite() для рисования изображения.

Если вы выполните вышеизложенное, все«волшебные розовые» пиксели (100% красный, 0% зеленый, 100% синий) будут рассматриваться как прозрачные.

BITMAP *bmp;
allegro_init();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
clear_to_color(screen, makecol(0,0,0));

// once the video mode has been set, it is safe to create/load images.
// this bitmap will be 640x480 with pure pink.
bmp = create_bitmap(640, 480);
clear_to_color(bmp, makecol(255,0,255));
rectfill(bmp, 100,100, 200,200, makecol(255,255,255));

draw_sprite(screen, bmp, 0, 0);

// or
// masked_blit(bmp, screen, 0,0, 0,0, 640,480);
...