2012-01-15 2 views
0

어떻게 애니메이션 GIF를 picturebox에로드하고 원본 파일을 삭제할 수 있습니까? 간단한 비트 맵 (http://support.microsoft.com/kb/814675/en-us?fr=1)을 사용하여이를 수행하는 방법을 알고 있지만 gif를 움직이면 어떻게 할 수 있습니까? 그리고 거기에 몇 가지 특별한 클래스 또는 메서드가 있다면, 임시 파일 (내가 그림을로드하는) 간단한 비트 맵 또는 이동 GIF 경우, 결정하는 방법은 무엇입니까?애니메이션 GIF를 picturebox에로드 한 다음 원본 파일을 삭제하는 방법은 무엇입니까?

+1

파일을 닫고 잠금을 피할 수 있도록 먼저 파일을 메모리 스트림에로드하십시오. –

+0

로드 된 메모리 스트림을 비트 맵으로 변환하면 작동합니까? 좀 더 우아한 해결책이 있기를 바랍니다. – viki

+0

나는 그것을 시도했다. (이미지를 처음로드 할 때, 메모리 스트림에로드하고 그 이미지를 다른 이미지로로드하는 것보다). 효과가 있었지만 필자는 평생 동안 picturebox를 열어야합니다. – viki

답변

0

결국 나는 한스의 제안을 바탕으로 깎아 냈다. 먼저 파일에서 FromStream 메서드를 사용하여 Image에 gif를로드했습니다. Image로 MemoryStream을로드하고 바이트 배열로 변환합니다. 이제 두 스트림을 닫을 수 있습니다. 이 후 TypeConverter를 사용하여 바이트 배열에서 Image를 복구했습니다. 나는 그것이 매우 우아하지 않다는 것을 알고 있지만 작동한다.

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; 
관련 문제