2009-03-16 13 views
2

ソースが更新する必要があるとイベントが判断するたびに、ソースイメージを変更してXAMLのImage(_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();