2012-01-15 30 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; 
相關問題