首先是代碼。在C中構建流暢的動畫#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace winform_project
{
public partial class Form1 : Form
{
void movement_correct(PictureBox pic, int i)
{
System.Threading.Thread.Sleep(25);
pic.Top += (i - 1);
pic.Left += (i + 3);
}
void movement_up(PictureBox pic, int i)
{
System.Threading.Thread.Sleep(25);
pic.Top -= (i - 1);
pic.Left -= (i + 3);
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
movement_correct(pictureBox1, i);
movement_correct(pictureBox2, i);
movement_correct(pictureBox3, i);
movement_correct(pictureBox4, i);
movement_correct(pictureBox5, i);
movement_correct(pictureBox6, i);
movement_correct(pictureBox7, i);
movement_correct(pictureBox8, i);
movement_correct(pictureBox9, i);
movement_correct(pictureBox10, i);
}
for (int i = 0; i < 5; i++)
{
movement_up(pictureBox1, i);
movement_up(pictureBox2, i);
movement_up(pictureBox3, i);
movement_up(pictureBox4, i);
movement_up(pictureBox5, i);
movement_up(pictureBox6, i);
movement_up(pictureBox7, i);
movement_up(pictureBox8, i);
movement_up(pictureBox9, i);
movement_up(pictureBox10, i);
}
}
}
}
有10個虛擬圖片框。每當我點擊按鈕,他們開始移動一下(有點像太空侵略者的敵人)。
我想在winforms中製作一個流暢的動畫。問題在於動畫不如我想要的那樣流暢。在我的代碼中,所有的盒子都沒有同時移動,它們的移動有一點點明顯的差距。我想要的是流暢的運動。
我想到多線程它,但後來意識到這將意味着每個對象的一個thead。有沒有其他的方法(在Winforms中)。
感謝您的幫助。
標記此WinForms。懷疑多線程是不會有幫助的。你可以去WPF? – Paparazzi
noop沒有WPF .... –
睡眠25毫秒每個控制運動將導致它移動控制在4 fps。這將顯着緩慢。 –