c++ - Allegro 5 如何绘制缩放位图区域

标签 c++ allegro5

我的 allegro 5 游戏需要绘制 tilesheet 的区域,然后我使用了 al_draw_bitmap_region,但现在我添加了更改屏幕分辨率的功能,所以现在我还需要缩放该位图,但 allegro 5 没有类似 al_draw_scaled_bitmap_region 的东西,它有 al_draw_bitmap_region 和 al_draw_scaled_bitmap` 但不是两者都有。 有人可以帮助我如何使用两者吗?

最佳答案

没有al_draw_scaled_bitmap_region,但是有 al_draw_tinted_scaled_rotated_bitmap_region。你可以只传递“默认” 不需要的参数的值。

al_draw_tinted_scaled_rotated_bitmap_region(
   bitmap,
   sx, sy, sw, sh,      // source bitmap region
   al_map_rgb(1, 1, 1), // color, just use white if you don't want a tint
   cx, cy,              // center of rotation/scaling
   float dx, float dy,  // destination
   xscale, yscale,      // scale
   0, 0));              // angle and flags

您还可以使用变换来缩放位图:

ALLEGRO_TRANSFORM trans, prevTrans;

// back up the current transform
al_copy_transform(&prevTrans, al_get_current_transform());

// scale using the new transform
al_identity_transform(&trans);
al_scale_transform(&trans, xscale, yscale);
al_use_transform(&trans);

al_draw_bitmap_region(*bitmap, sx, sy, sw, sh, dx, dy, 0));

// restore the old transform
al_use_transform(&prevTrans);

关于c++ - Allegro 5 如何绘制缩放位图区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612970/

相关文章:

c - 多线程和互斥体

c++ - Allegro5 和 MS Visual Studio 2010

c++ - 代码问题将字符串转换为图表excel

c++ - 打印同一类的 3 个对象

c++ - 运算符 = 覆盖 c++

c++ - OpenCV C++。快速计算混淆矩阵

c++ - 如果您不知道传递的方法的确切类,如何将方法传递给类

c++ - 快板 5 中的抗锯齿

c++ - 如何将 Allegro 库与 Ubuntu Allegro 应用程序捆绑在一起?

c++ - 二维碰撞 react