2

イベントによってソースの更新が必要であると判断されるたびにソース イメージを変更することで、XAML の Image (_browserScreenshot below) オブジェクトを更新しようとしています。今私はこれを持っています:

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 プロパティを変更するとエラーが発生し続けますが、これを正しく変更する方法がわかりません。よろしくお願いします。

4

2 に答える 2

0

次の行が私の問題であることが判明しました。

bitmapSource.Freeze();

于 2009-03-17T00:44:10.630 に答える
0

おそらく、オブジェクトをフリーズしたいと思うでしょう。あなたが抱えている問題は、毎回完全に新しい BitmapSource を作成し、ガベージ コレクターに古いイメージを破棄させたいということです。

于 2009-03-20T16:54:25.890 に答える