对于多帧的图像文件你可以这样做:Guid[] guid = image.FrameDimensionsList;
foreach(Guid aguid in guid)
{
     frameDimension=new FrameDimension(aguid);
}

解决方案 »

  1.   

    不用for each用for啊
    for(int i = 0; i < guid.length; i++)
      

  2.   

    显示在picturebox中怎么写呢?frameDimension也不是image类型的呀?
      

  3.   

    FrameDimension fd = new FrameDimension(image.FrameDimensionsList[0]);
    int x = this.pictureBox1.Image.GetFrameCount(fd);
    然后就该会做了吧
    image有个SelectActiveFrame()
      

  4.   

    还是不行耶:
    picLogo.Image=Image.FromFile(Application.StartupPath +"\\Data\\ExplodeX.gif");  
    System.Drawing.Imaging.FrameDimension fd;
    fd = new System.Drawing.Imaging.FrameDimension(picLogo.Image.FrameDimensionsList[0]);
    picLogo.Image.SelectActiveFrame(fd,1); 
    并不能只显示那一帧,而是从那一帧开始播放(还是动画,而不是我要的只显示其中一帧)
      

  5.   

    唉 服了你了
    既然你都可以选出每一帧了 你怎么就不能自己实现呢?
    例:
    对于每一帧,单独的保存(用image.save()),也就是说把每一帧都单独的存成图像文件,或者驻留在内存里.
    再调每个单独保存的图像来显示不就可以了?隔一秒update一次
      

  6.   

    我又试验了SelectActiveFrame,好像执行完没有反应
    image.save()只能存成文件呀?那我还做GIF干什么,不如直接用现成的文件算了我用动画GIF的目的就是不用一帧一个文件这样一堆外接文件,而只用一个动画GIF文件就包含了我所有要显示的帧。所以我希望可以读出GIF中指定的一帧来