2014-07-23 3 views
0

일부 이미지를 저장하는 비트 맵 목록이 있습니다. 그런 다음 WPF UserControl에있는 Image 요소를 해당 목록의 첫 번째 요소로 지정합니다. 이를 위해 나는이 시도 :Bitmap이 표시되지 않는 Image.Source

ToBitmapImage은 다음과 같습니다 정적 기능입니다
Image2.Source = myBitmapArray[0].ToBitmapImage(); 

:

public static BitmapImage ToBitmapImage(this Bitmap bitmap) 
    { 
     BitmapImage bitmapImage = new BitmapImage(); 

     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp); 
      memoryStream.Position = 0; 
      bitmapImage.BeginInit(); 
      bitmapImage.StreamSource = memoryStream; 
      bitmapImage.EndInit(); 
     } 

     return bitmapImage; 
    } 

을하지만 내 Image.SourceBitmapImage을 할당 할 때 이미지가 표시되지 않습니다. 내가 뭘 잘못하고있어?

답변

2

MemoryStreamStreamSource 속성에 지정한 후에 처리해야합니다. BitmapImage.StreamSource

그러나 accoding의 당신은

당신이 BitmapImage를 만든 후 스트림을 종료하고자하는 경우 BitmapCacheOption.OnLoad하는 CacheOption 속성을 설정해야합니다. 기본 OnDemand 캐시 옵션은 비트 맵이 필요할 때까지 스트림에 대한 액세스를 유지하고 정리는 가비지 수집기에서 처리합니다.

그래서 어느 MemoryStream가 배치되지 않도록 using 문을 떨어 뜨리거나 BitmapCacheOption.OnLoad를 사용합니다.

+0

좋아요! 무슨 실수 야 ... 지금은 작동하지. 감사! (답을 수락하기 위해 7 분) – Sonhja

+0

당신을 진심으로 환영합니다. – Dirk

관련 문제