Allegro 4.2.1,去除bmp背景色

发布于 2024-08-22 11:11:29 字数 412 浏览 11 评论 0原文

我一直在 allegro 4.2.1 中构建游戏,需要帮助删除特定颜色以使其不可见。背景颜色为(255,0,255)。我访问过以下网站,但它们对我帮助不大:

http://www.allegro.cc/forums/thread/599210" allegro.cc/forums/thread/599210, http://www.cpp-home.com/tutorials/258_1.htm

如果有人能为我提供一个例子,我将非常高兴。

I have been building a game in allegro 4.2.1 and need help to remove a specific color to make invisible. The background color is, (255, 0, 255). I have been at the following sites, but they have not helped me much:

http://www.allegro.cc/forums/thread/599210,
http://www.cpp-home.com/tutorials/258_1.htm

If someone could provide me with an example, I would be very glad.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橪书 2024-08-29 11:11:29

您需要执行以下操作才能启用透明像素:

  • 在调用 set_gfx_mode() 之前调用 set_color_depth(32)

  • 调用 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);

You need to do the following things to enable transparent pixels:

  • Call set_color_depth(32) before calling set_gfx_mode()

  • Load your images after calling set_gfx_mode()

  • Use masked_blit() or draw_sprite() to draw the image.

If you do the above, all "magic pink" pixels (100% red, 0% green, 100% blue) will be treated as transparent.

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文