Автор:
Интернет | добавлено: 12.01.2011, 19:49 | просмотров: 3491 (1+) | комментариев:
0 | рейтинг:
x0
Пример демонстрирует прорисовку на форме плавно увеличивающегося изображения. Используются потоки (Thread), если честно, совсем не правильно, но для понятия основных принципов создания простой анимации в C# (.NET) будет достаточно.
using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
public class AnimateImage : Form
{
private int width = 10;
private int height = 10;
Image pic = Image.FromFile("kbyte305x130.gif");
private Button abort = new Button();
Thread t;
public AnimateImage()
{
abort.Text = "Abort";
abort.Location = new Point(50, 230);
abort.Click += new EventHandler(Abort_Click);
Controls.Add(abort);
SetStyle(ControlStyles.DoubleBuffer
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.UserPaint, true);
t = new Thread(new ThreadStart(Run));
t.Start();
}
protected void Abort_Click(object sender, EventArgs e)
{
t.Abort();
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawRectangle(Pens.Black, 8, 8, width + 3, height + 3);
g.DrawImage(pic, 10, 10, width, height);
base.OnPaint(e);
}
public void Run()
{
int dx = 5, dy = 5;
while (true)
{
for (int i = 0; i < 500; i++)
{
width += dx;
height += dy;
Invalidate();
Thread.Sleep(30);
}
dx = -dx; dy = -dy;
}
}
public static void Main()
{
Application.Run(new AnimateImage());
}
}