4

我的计时器有问题。我在函数中有函数(在函数中绘制)

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

}

我想每隔一秒调用一次绘图函数(每秒画一条线)。在绘图之间,函数需要继续工作并计算=循环,并绘制下一行一段时间(间隔)。我试过了

timer1.Tick += new EventHandler(timer1_Tick);

ETC..

private void timer1_Tick(object sender, EventArgs e)
    {
        ...
        draw(A, B, Pen)
    }

ETC..

但这一切都停止了我的功能,并随机画了一条线。我只想要函数'func'中两个绘图之间的时间(间隔)。没有计时器可以正常工作,但立即绘制所有线条,我需要缓慢绘制。干杯。

4

4 回答 4

25

我并不完全清楚您要做什么,但是,通常,您可以使用 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
}
于 2012-06-08T19:26:32.110 回答
5

试试这个

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);
}
于 2012-06-08T19:30:18.317 回答
2

您不会在 WinForms 应用程序中绘图,而是响应更新或绘制消息。在表单的事件中执行您想要执行的操作Paint(或覆盖该OnPaint方法)。当您希望重新绘制表单时,请使用Form.Invalidate. 例如调用Form.Invalidate计时器滴答声...

于 2012-06-08T19:28:51.360 回答
-14

现在解决了

System.Threading.Thread.Sleep(700);
于 2012-06-09T15:32:21.373 回答