我有三个不同的课程。每个班级负责使用ncurses绘制特定的东西。
我必须一次性绘制所有这三件事。其中一个班级负责董事会,另外两个班级在董事会内部吸取一些东西。
我得到了它的工作,但问题是每当我使用clear
时,它会清除董事会和其他两件事;我希望董事会留下来永远不会被删除。我想清除只有特定类负责的图纸。
例如,假设我有一个电路板,我有一个person
类和一个dog
类。当我在draw
课程中调用person
方法时,它会将我吸引到董事会内部,但每当我将其移动到不同的位置时,它会吸引新人,但它永远不会清除旧的人
除非我使用clear
中的curses.h
方法,但它会删除并清除包括棋盘和狗在内的所有内容。
但是,我只想删除这个人而不是一切。是否有任何内置方法可以使用除clear
或erase
之外的ncurses,或清除整个屏幕的任何内容?
答案 0 :(得分:0)
正如Ivan Rubinson在评论中所建议的那样,通常的方法是清除所有内容然后重绘所有内容每一帧/重绘。
根据the documentation,clear()
应清除整个屏幕:
clear(),erase(),wclear()和werase()函数清除当前或指定窗口中的每个位置。
clear()和wclear()函数也可以实现与调用clearok()相同的效果,以便在下次调用窗口的wrefresh()时完全清除窗口并重新绘制完整的窗口。 p>
您的主循环/绘图代码应该类似于(伪代码):
clear(); // clear everything
// redraw everything
for(auto& widget : drawables)
{
widget.draw();
}
// display
refresh();
答案 1 :(得分:0)
您可以通过为每个对象创建一个窗口,并在它们完成后删除它们来完成此操作。这样,您只需清除您要移除的窗口,然后再刷新它,然后delete it。
即,使用newwin
,waddstr
,wrefresh
,wclear
和delwin
而不是addstr
,refresh
和clear
。