如何在 C# 中显示 GIF 图像的特定帧?
How to show a specific frame of a GIF image in C#?
我想显示一帧 gif 图片。搜索了一下,发现下面的代码应该可以,但是不行。它正确检测到帧数,但它显示 gif 的整个帧而不是指定的帧。谢谢大家
Image[] frames = new Image[36];
Image GG = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
FrameDimension dimension = new FrameDimension(GG.FrameDimensionsList[0]);
// Number of frames
int frameCount = GG.GetFrameCount(dimension);
label1.Text = frameCount.ToString();
// Return an Image at a certain index
GG.SelectActiveFrame(dimension, 1);
frames[1] = ((Image)GG.Clone());
pictureBox1.Image = frames[1];
在调用 SelectActiveFrame() 之前使用您自己的代码,然后更改为以下行:
frames[0] = new Bitmap(GG);
pictureBox1.Image = frame[0];
这应该可以解决问题。请不要忘记处理创建的图像。
哦,它有效,但不像你期望的那样。
当您设置 gif 图像的活动帧时,它实际上会从该帧重新开始动画。例如,您必须在更改框架时通过将 pictureBox.IsEnabled
设置为 false 来停止它。试试下面的代码
private Image img;
public Form1()
{
InitializeComponent();
img = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
pictureBox1.Image = img;
}
private void button1_Click(object sender, EventArgs e)
{
var dim = new FrameDimension(img.FrameDimensionsList[0]);
img.SelectActiveFrame(dim, 1);
pictureBox1.Enabled = false;
}
尝试在不同时刻按下按钮,您会看到活动图像框会发生变化。
我想显示一帧 gif 图片。搜索了一下,发现下面的代码应该可以,但是不行。它正确检测到帧数,但它显示 gif 的整个帧而不是指定的帧。谢谢大家
Image[] frames = new Image[36];
Image GG = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
FrameDimension dimension = new FrameDimension(GG.FrameDimensionsList[0]);
// Number of frames
int frameCount = GG.GetFrameCount(dimension);
label1.Text = frameCount.ToString();
// Return an Image at a certain index
GG.SelectActiveFrame(dimension, 1);
frames[1] = ((Image)GG.Clone());
pictureBox1.Image = frames[1];
在调用 SelectActiveFrame() 之前使用您自己的代码,然后更改为以下行:
frames[0] = new Bitmap(GG);
pictureBox1.Image = frame[0];
这应该可以解决问题。请不要忘记处理创建的图像。
哦,它有效,但不像你期望的那样。
当您设置 gif 图像的活动帧时,它实际上会从该帧重新开始动画。例如,您必须在更改框架时通过将 pictureBox.IsEnabled
设置为 false 来停止它。试试下面的代码
private Image img;
public Form1()
{
InitializeComponent();
img = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
pictureBox1.Image = img;
}
private void button1_Click(object sender, EventArgs e)
{
var dim = new FrameDimension(img.FrameDimensionsList[0]);
img.SelectActiveFrame(dim, 1);
pictureBox1.Enabled = false;
}
尝试在不同时刻按下按钮,您会看到活动图像框会发生变化。