我有计时器问题。 我在函数中有函数(在函数中绘制)
void func(){
/*...do something ... */
for(){
for() {
/*loop*/
draw(A,B, Pen);
}
/*... do something ...*/
}
}
这是绘制功能
public void draw1(Point Poc, Point Kra, Pen o) {
Graphics g = this.CreateGraphics();
g.DrawLine(o,Poc.X+4, Poc.Y+4,Kra.X+4, Kra.Y+4);
g.Dispose();
}
我在点击按钮
上调用函数'func'private void button4_Click(object sender, EventArgs e){
func();
}
我想调用绘制函数evry second(每秒绘制一行)。 在绘图之间,函数需要继续工作并计算=循环,并绘制下一行一段时间(间隔)。我试过
timer1.Tick += new EventHandler(timer1_Tick);
等。
private void timer1_Tick(object sender, EventArgs e)
{
...
draw(A, B, Pen)
}
等。
但所有这些都会阻止我的功能,并绘制一条随机线。 我只想要函数'func'中两张图之间的时间(间隔)。没有计时器工作正常,但立即绘制所有行,我需要慢速绘制。 欢呼声。
答案 0 :(得分:18)
我不是 完全 清楚你要做什么,但是,一般来说,你可以使用Timer类的对象来指定代码在指定的时间间隔执行。代码看起来像这样:
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
myTimer.Interval = 1000; // 1000 ms is one second
myTimer.Start();
public static void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
// code here will run every second
}
答案 1 :(得分:4)
试试这个
var aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 1000;
aTimer.Enabled = true;
//if your code is not registers timer globally then uncomment following code
//GC.KeepAlive(aTimer);
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
draw(A, B, Pen);
}
答案 2 :(得分:2)
您在WinForms应用中没有绘制,您会响应更新或绘制消息。在表单的Paint
事件中执行您想要执行的操作(或覆盖OnPaint
方法)。如果要重新绘制表单,请使用Form.Invalidate
。例如在计时器刻度中调用Form.Invalidate
...
答案 3 :(得分:-11)
现在解决
System.Threading.Thread.Sleep(700);