【问题标题】:How to load animated gif to picturebox and then delete original file?如何将动画 gif 加载到图片框然后删除原始文件?
【发布时间】:2012-01-15 19:16:07
【问题描述】:

我想知道如何将动画 gif 加载到图片框而不是删除原始文件?我知道如何使用简单的位图 (http://support.microsoft.com/kb/814675/en-us?fr=1) 来实现这一点,但是如何使用移动 gif 来做到这一点?如果有一些特殊的类或方法,有什么方法可以确定临时文件(我从中加载图片)是简单的位图还是移动 gif?

【问题讨论】:

  • 先将文件加载到内存流中,这样您就可以关闭文件并避免锁定。
  • 将加载的内存流转换为位图可以吗?我希望有一些更优雅的解决方案。
  • 我已经尝试过了(首先将文件加载到 Image,然后将其加载到内存流中,然后将该流加载到另一个 Image)。它有效,但我仍然需要在图片框的生命周期内打开流。

标签: .net c#-2.0 picturebox animated-gif temporary-files


【解决方案1】:

最后,我根据汉斯的建议使用了解决方案。首先,我使用 FromStream 方法从文件中将 gif 加载到 Image 中。比我用 Image 加载 MemoryStream 并将其转换为字节数组。现在我可以关闭两个流。在此之后,我使用 TypeConverter 从字节数组中恢复图像。我知道,它不是很优雅,但它确实有效。

Image imgTemp = Image.FromStream(ms);
imgTemp.Save(byteStream, imgTemp.RawFormat);
byte[] temparray = byteStream.ToArray();
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Image));
Image newImage = (Image)tc.ConvertFrom(temparray);
this.m_Image.Image = null;
this.m_Image.Image = newImage;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2016-05-04
    • 2021-07-21
    相关资源
    最近更新 更多