Создание анимации в C#
В данном уроке используется среда программирования Microsoft Visual studio 2012. Алгоритм работы аналогичен и для других сред программирования.
Перед тем, как приступить к данному уроку, следует ознакомиться с предыдущим уроком : Как начать работать с графикой в Microsoft C#
Сначала создаем свой проект, в котором и будем работать. Разместим на форме (Form1) объекты : PictureBox, Timer и Button следующим образом:
Теперь попробуем создать какую-нибудь примитивную анимацию, при помощи PictureBox и Timer, которая запустится после нажатия на кнопку (Button).
Следовательно для этого будем обрабатывать событие нажатия на кнопку и событие "срабатывания" таймера. Также заведем все нужные для рисования объекты и переменные.
Далее приведен код программы и скриншоты, которые содержат все необходимое пояснение реализации анимации.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Lesson_Animation { public partial class Form1 : Form { Graphics gr; //объявляем объект - графику, на которой будем рисовать Pen p; //объявляем объект - карандаш, которым будем рисовать контур SolidBrush fon; //объявляем объект - заливки, для заливки соответственно фона SolidBrush fig; //и внутренности рисуемой фигуры int rad; // переменная для хранения радиуса рисуемых кругов Random rand; // объект, для получения случайных чисел public Form1() { InitializeComponent(); } //опишем функцию, которая будет рисовать круг по координатам его центра void DrawCircle(int x, int y) { int xc, yc; xc = x - rad; yc = y - rad; gr.FillEllipse(fig, xc, yc, rad, rad); gr.DrawEllipse(p, xc, yc, rad, rad); } // для перехода к данной функции сделайте двойной щелчок по кнопке (Button) // добавленной на форму. См. на фото, после кода private void button1_Click(object sender, EventArgs e) { gr = pictureBox1.CreateGraphics(); //инициализируем объект типа графики // привязав к PictureBox p = new Pen(Color.Lime); // задали цвет для карандаша fon = new SolidBrush(Color.Black); // и для заливки fig = new SolidBrush(Color.Purple); rad = 40; //задали радиус для круга rand = new Random(); //инициализируем объект для рандомных числе gr.FillRectangle(fon, 0, 0, pictureBox1.Width, pictureBox1.Height); // закрасим черным // нашу область рисования // вызываем написанную нами функцию, для прорисовки круга // случайным образом выбрав перед этим координаты центра int x, y; for (int i = 0; i < 15; i++) { x = rand.Next(pictureBox1.Width); y = rand.Next(pictureBox1.Height); DrawCircle(x, y); } timer1.Enabled = true; //включим в работу наш таймер, // то есть теперь будет происходить событие Tick и его будет обрабатывать функция On_Tick (по умолчанию) } // для получения данной функции перейдите к конструктору формы // и сделайте двойной щелчок по таймеру, добавленному на форму. См. на фото после кода private void timer1_Tick(object sender, EventArgs e) { //сначала будем очищать область рисования цветом фона gr.FillRectangle(fon, 0, 0, pictureBox1.Width, pictureBox1.Height); // затем опять случайным образом выбираем координаты центров кругов // и рисуем их при помощи описанной нами функции int x, y; for (int i = 0; i < 15; i++) { x = rand.Next(pictureBox1.Width); y = rand.Next(pictureBox1.Height); DrawCircle(x, y); } } } }

После этого, можно запустить программу и после нажатия на кнопку увидите простую анимацию – случайное перемещение кругов по черному фону, как показано ниже:
Для того, чтобы анимация соответствовала требованиям иногда необходимо менять так называемый тик таймера, т.е. промежуток выполнения очередного шага анимации. Это выполняется в Инспекторе объектов. Нужно выбрать элемент Timer, нажать на кнопку Свойства и там выбрать и изменить параметр Interval (выражается в миллисекундах) В данном примере Interval равен 150 мс.
Ниже прикреплен архив данного проекта.
Прикрепленный файл | Размер |
---|---|
Skopinskiy_LessonAnimation.zip | 54.79 кб |