Анимация gif в winforms c#
Есть анимация формата gif.
Image i = Properties.Resources.y4;
pictureBox1.Image = i;
ImageAnimator.Animate(i, OnFrameChanged);
Как я могу перемещаться по шагам, ну у меня идет анимация стрелочки вверх, вниз, вправо, влево. Могу я в зависимости от ситуации отрисовать картинку стрелочки вправо? то есть как то ходить по шагам?
Как по клику кнопки скрыть анимацию, так как
pictureBox1.Enabled = false; просто ее останавливает.Почему никак не работает
ImageAnimator.StopAnimate(i, OnFrameStop);
Ответы (1 шт):
Автор решения: MSDN.WhiteKnight
→ Ссылка
Реализуйте анимацию вручную вместо использования PictureBox. Класс Image поддерживает выбор кадра анимации:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Image img;
System.Drawing.Imaging.FrameDimension dim;
int frame = 0;
public Form1()
{
InitializeComponent();
}
private void bNext_Click(object sender, EventArgs e)
{
int count = img.GetFrameCount(dim);
frame++;
if (frame >= count) frame = 0;
img.SelectActiveFrame(dim, frame);
panel1.Invalidate();
panel1.Update();
}
private void Form1_Load(object sender, EventArgs e)
{
img = Bitmap.FromFile(@"...");
Guid[] dims = img.FrameDimensionsList;
if (dims.Length == 0)
{
MessageBox.Show("Error - image does not have frame dimensions!");
return;
}
dim = new System.Drawing.Imaging.FrameDimension(dims[0]);
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
if (img != null) e.Graphics.DrawImage(img, 0.0f, 0.0f);
}
}
}