c++ - Allegro C++ 如何刷新删除行?

标签 c++ allegro

嘿,所以我正在尝试制作一个程序,您可以在其中从一个点到鼠标所在的位置画一条线,但我无法弄清楚如何在画完线后将其删除。

#include <allegro.h>
#include <cstdlib>

BITMAP *buffer;

int main()
{
    allegro_init();
    install_mouse();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0);
    buffer = create_bitmap(640, 480);

    while (!key[KEY_ESC]) {
        if (key[KEY_SPACE]) {
            line(buffer, 30, 450, mouse_x, mouse_y, makecol(255, 0, 0));
        }

        draw_sprite(screen, buffer, 0, 0);
        release_screen();

        rest(10);
    }

    return 0; 
}
END_OF_MAIN();

最佳答案

您需要将线的坐标存储在某种数据结构中(例如,结构数组)。当你想删除一行时,将其从数据结构中移除。

你的绘图代码看起来像:

  1. 清除缓冲区
  2. 遍历每一行,将其绘制到缓冲区
  3. 绘制缓冲区到屏幕

并且不要调用获取/释放屏幕。通常不需要它们,如果滥用它们会给自己带来很多问题。

关于c++ - Allegro C++ 如何刷新删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540449/

相关文章:

c++ - 属性通知更改在 C++/CX 绑定(bind)中等效

c++ - C++中的变量如何命名为函数调用?

c++ - Allegro 5、C++ 和数学

c - allegro5 - 如何在 Linux 上运行?

c++ - boost::variant中的类holden的拷贝构造函数存在问题

c++ - 多显示器环境中的鼠标环绕

c++ - 是否可以从IOS项目中的cpp文件获取文件路径

c++ - SPSS 15 I/O DLL : Modifying Existing Cases

c++ - Allegro 能否在运行时更新操纵杆的数量?

c - Allegro load_bitmap 不工作