如何在图片框中绘制线条时添加时间延迟?我正在使用C#,visual studio 2010。
Graphics g = picturebox.CreateGraphics();
Pen p = new Pen(Color.Red);
for (int j = 1; j < 10; j++)
{
//Draw Line 1
g.DrawLine(p,j*3,j*3,100,100);
//----->How to put a Delay for 2 seconds So I
// see the first line then see the second after 2 sec
//Draw Line 2
g.DrawLine(p,j*10,j*10,100,100);
}
答案 0 :(得分:2)
在绘图表格上使用计时器。当您准备好绘制时,启用计时器并开始跟踪您需要绘制的各种线条(例如,在列表/数组中)。每次定时器在定时器的回调函数中触发1行并增加你的“行索引”(下一行绘制的行)。绘制完所有行后,禁用计时器。
例如:
public partial class DrawingForm : Form
{
Timer m_oTimer = new Timer ();
public DrawingForm ()
{
InitializeComponent ();
m_oTimer.Tick += new EventHandler ( m_oTimer_Tick );
m_oTimer.Interval = 2000;
m_oTimer.Enabled = false;
}
// Enable the timer and call m_oTimer.Start () when
// you're ready to draw your lines.
void m_oTimer_Tick ( object sender, EventArgs e )
{
// Draw the next line here; disable
// the timer when done with drawing.
}
}
答案 1 :(得分:2)
您可以使用简单的计时器(System.Windows.Forms.Timer
)并跟踪当前行索引。
public partial class Form1 : Form {
private int index;
private void frmBrowser_Load(object sender, EventArgs e) {
index = 0;
timer.Interval = 2000;
timer.Start();
}
private void timer1_Tick(object sender, EventArgs e) {
index++;
pictureBox1.Invalidate();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e) {
Pen p = new Pen(Color.Red);
for (int j = 1; j < index; j++) {
g.DrawLine(p,j*3,j*3,100,100);
g.DrawLine(p,j*10,j*10,100,100);
}
}
}
从头开始写这个,它没有经过测试。
答案 2 :(得分:0)
其他答案中使用计时器添加暂停的建议是正确的,但如果您想要慢慢显示单行的绘制,则需要做更多的事情。
您可以编写自己的线条绘制方法,并将线条的绘图分割成段,并在各段之间暂停。
快速替代方案是使用WPF而不是WinForms:
这样您就不必编写线条图代码,也不必编写计时器。
答案 3 :(得分:-2)
使用System.Threading;
的Thread.sleep(2000);