2009-03-16 3 views
2

소스 업데이트가 필요하다고 이벤트가 판단 할 때마다 소스 이미지를 변경하여 XAML의 이미지 (_browserScreenshot 아래) 객체를 업데이트하려고합니다. 지금은이 있습니다BitmapSource를 WPF의 이미지 소스로 사용

다음
public BitmapSource GetScreen() 
{ 
    Bitmap bitmap = new Bitmap(app.Browser.ClientRectangle.Width, app.Browser.ClientRectangle.Height); 
    app.Browser.DrawToBitmap(bitmap, app.Browser.Bounds); 

    BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); 

    bitmapSource.Freeze(); 

    bitmap.Dispose(); 
    bitmap = null; 
    return bitmapSource; 
} 

내가 같이 이벤트 핸들러가 :이 이벤트는 새로운 스크린 샷을 발사 지금 때마다

app.BitmapSource.Changed += new EventHandler(BitmapSource_Changed); 

void BitmapSource_Changed(object sender, EventArgs e) 
{ 
    Window1._browserScreenshot.Source = app.GetScreen(); 
} 

촬영하고 (여기 _browserScreenshot라고도 함) 이미지의 소스를 컨트롤을 업데이트해야합니다. IsFrozen 속성을 변경하는 것에 대한 오류가 계속 발생하지만 올바르게 변경하고 원하는대로이 작업을 수행하는 방법을 알 수 없습니다. 미리 감사드립니다.

+0

오류에 대한 세부 정보를 추가 할 수 있습니까? 끔찍한 잘못으로 나에게 뛰어 오르는 것은 아무것도 없다. –

답변

0

당신은 누구나 을 원하고 개체를 고정시킬 수 있습니다. 문제는 매번 완전히 새로운 BitmapSource를 만들고 가비지 컬렉터가 이전 이미지를 처리하게하려는 것입니다.

0

는 다음 줄 내 문제로 밝혀졌다 :

bitmapSource.Freeze();

관련 문제