【问题标题】:Allegro C++ how to refresh delete lines?Allegro C++如何刷新删除行?
【发布时间】:2013-01-26 19:02:05
【问题描述】:

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

#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();

【问题讨论】:

    标签: c++ allegro


    【解决方案1】:

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

    您的绘图代码如下所示:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多