嘿,所以我正在尝试制作一个程序,您可以在其中从一个点到鼠标所在的位置画一条线,但我无法弄清楚如何在画完线后将其删除。
#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 C++ 如何刷新删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14540449/