0
我不知道如何加载动画gif到图片框和删除原始文件?我知道如何用简单的位图(http://support.microsoft.com/kb/814675/en-us?fr=1)实现这一点,但如何通过移动gif来实现这一点?如果有一些特殊的类或方法,有什么方法可以确定,如果临时文件(我从中加载图片)是简单的位图或移动gif?如何加载动画gif到图片框,然后删除原始文件?
我不知道如何加载动画gif到图片框和删除原始文件?我知道如何用简单的位图(http://support.microsoft.com/kb/814675/en-us?fr=1)实现这一点,但如何通过移动gif来实现这一点?如果有一些特殊的类或方法,有什么方法可以确定,如果临时文件(我从中加载图片)是简单的位图或移动gif?如何加载动画gif到图片框,然后删除原始文件?
最后,我根据汉斯的建议使用了洗脱液。首先,我将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;
首先将文件加载到内存流中,以便您可以关闭文件并避免锁定。 – 2012-01-15 19:59:05
将加载的内存流转换为位图将工作?我希望有一些更优雅的解决方案。 – viki 2012-01-15 20:07:31
我试过了(首先将文件加载到图像,然后将其加载到内存流中,并将该流加载到另一个图像)。它的工作,但我仍然需要开放流的终身picturebox。 – viki 2012-01-15 20:38:24