我首先在窗口上绘制polygon
,然后在一秒后删除polygon
并绘制circle
。
我为它编写了这段代码:
#include <Simple_window.h>
#include <Graph.h>
using namespace Graph_lib;
//------------------------------------------------------------------------------
int main() {
Simple_window win(Point(100,100),600,400,"lines");
Graph_lib::Polygon poly;
Circle c(Point(100,150), 50);
poly.add(Point(100,100));
poly.add(Point(150,150));
poly.add(Point(50,100));
win.attach(poly);
Sleep(1000);
win.detach(poly);
win.attach(c);
win.wait_for_button();
return 0;
}
但它在实践中并没有以这种方式发生。事实上,系统只需等待一秒钟,只显示circle (c)
,polygon (poly)
将不会显示!
如何解决问题?
答案 0 :(得分:2)
主要内部的呼叫睡眠功能将冻结应用程序,并重新刷新/刷新。
要做你需要的东西,你必须使用计时器或用作计时器的线程来放置代码和管理延迟。
计时器事件中的代码可能就像这样
主要内部的呼叫睡眠功能将冻结应用程序,并重新刷新/刷新。
要做你需要的东西,你必须使用计时器或用作计时器的线程来放置代码和管理延迟。
你的计时器事件中的代码可能是这样的,我知道代码根本不正确,它是一条痕迹。
Graph_lib::Polygon poly;
Circle c;
void OnTimerEvent()
{
win.detach(poly);
win.attach(c);
}
int main()
{
c(Point(100,150), 50);
poly.add(Point(100,100));
poly.add(Point(150,150));
poly.add(Point(50,100));
win.attach(poly);
timer.interval = 1000;
timer.enabled = true;
win.wait_for_button();
}
我的意思是你必须启动一个计时器,该事件将在1秒后被调用,并可以完成你的工作。