2012-09-13 162 views
0

我有一个窗体窗体,其中包含一个图像的图片框控件,我想要做的是将图片框控件向右移动一个缓慢的运动。这里是我的代码:Winforms PictureBox动画?

 Point currentPoint = pictureBox_Logo.Location; 
     for (int i = 0; i < 25; i++) 
     { 
      pictureBox_Logo.Location = new Point(pictureBox_Logo.Location.X + 1, pictureBox_Logo.Location.Y); 
      Thread.Sleep(30); 
     } 

这里的问题是,当代码执行,而不是看到一个画面移动时,我看到了一个白色的画面移动和移动停止出现的画面。我不是什么问题,胃口有什么帮助。

Thank.s

回答

0

尝试了Thread.Sleep后使用pictureBox_Logo.Refresh()(30); 或寻找标准的计时器控制。

+0

你是什么意思标准的计时器控制? – ykh

1

代码:

public partial class Form1 : Form 
{ 
    void timer_Tick(object sender, EventArgs e) 
    { 
     int x = pictureBox1.Location.X; 
     int y = pictureBox1.Location.Y; 

    pictureBox1.Location = new Point(x+25, y); 

    if (x > this.Width) 
     timer1.Stop(); 
} 

public Form1() 
{ 
    InitializeComponent(); 

    timer1.Interval = 10; 
    timer1.Tick += new EventHandler(timer_Tick); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    pictureBox1.Show(); 
    timer1.Start(); 
} 

}

原来的线程是在这里Move images in C#

0

我的代码实际上是写的,但我做错了什么是事件将代码:

private void Form1_Shown(object sender, EventArgs e); 

但是,当我把我的代码放在一个按钮的代码工作没有问题。