Анимация изображений в C#

В этом примере показано, как анимировать изображения, загружая их во время выполнения, а затем воспроизводя их по одному.

Чтобы упростить поиск изображений, я добавил их в проект. (Откройте меню «Проект», выберите «Добавить существующий элемент» и выберите изображения.) Затем я выбрал изображения в обозревателе решений и установил их свойства «Копировать в выходной каталог» в «Копировать, если новый», чтобы они были скопированы в исполняемый каталог. Затем программа может легко найти их, указав только имена файлов, а не их пути.

Для анимации изображений первый шаг загружает их. Следующий код показывает, как программа загружает изображения при запуске.

// Изображения кадра.
private Bitmap[] Frames;

// Индекс текущего кадра.
private int FrameNum = 0;

// Загружаем изображения.
private void Form1_Load(object sender, EventArgs e)
{
    // Загружаем фреймы.
    Frames = new Bitmap[18];
    for (int i = 0; i < 18; i++)
    {
        Frames[i] = new Bitmap("Frame" + i + ".png");
    }

    // Отображение первого кадра.
    picFrame.Image = Frames[FrameNum];
}

Программа сохраняет изображения в массиве Frames. Первоначально он устанавливает FrameNum в 0, поэтому он отображает первый кадр.

Когда форма загружается, программа пеет от 0 до 17 загружает файлы изображений с именами формы Frame0.png, Frame1.png и т. д. Обработчик события Load формы заканчивается, отображая первый кадр в picFrame PictureBox.

Форма программы содержит Timer, который отображает фреймы. Следующий код показывает, как обработчик событий Timer Tick отображает следующий кадр.

// Отображение следующего изображения.
private void tmrNextFrame_Tick(object sender, EventArgs e)
{
    FrameNum = ++FrameNum % Frames.Length;
    picFrame.Image = Frames[FrameNum];
}

Приращение кода FrameNum и принимает результат по модулю числа кадров. Это означает, что FrameNum всегда представляет номер кадра между 0 и самым большим индексом в массиве Frames.

Затем обработчик событий отображает текущий кадр в picFrame PictureBox.

Кнопка запуска программы использует следующий код для запуска или остановки Timer.

// Запуск или остановка анимации.
private void btnStartStop_Click(object sender, EventArgs e)
{
    tmrNextFrame.Enabled = !tmrNextFrame.Enabled;
    if (tmrNextFrame.Enabled) btnStartStop.Text = "Stop";
    else btnStartStop.Text = "Start";
}

Конечной частью программы является полоса прокрутки с именем hscrFps. Когда вы изменяете значение полосы прокрутки, следующий код изменяет скорость компонента Timer.

// Установите задержку на кадр.
private void hscrFps_Scroll(object sender, ScrollEventArgs e)
{
    tmrNextFrame.Interval = 1000 / hscrFps.Value;
    lblFps.Text = hscrFps.Value.ToString();
}

Источник: http://csharphelper.com/blog/2016/10/animate-images-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Adblock
detector