Allegro 5如何绘制缩放的位图区域

时间:2016-04-14 02:46:43

标签: c++ allegro5

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

1 个答案:

答案 0 :(得分:1)

没有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);