2012-01-15 53 views
0

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

+1

首先将文件加载到内存流中,以便您可以关闭文件并避免锁定。 – 2012-01-15 19:59:05

+0

将加载的内存流转换为位图将工作?我希望有一些更优雅的解决方案。 – viki 2012-01-15 20:07:31

+0

我试过了(首先将文件加载到图像,然后将其加载到内存流中,并将该流加载到另一个图像)。它的工作,但我仍然需要开放流的终身picturebox。 – viki 2012-01-15 20:38:24

回答

0

最后,我根据汉斯的建议使用了洗脱液。首先,我将gif加载到带有来自文件的FromStream方法的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; 
相关问题