質問

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

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();
}

このイベントが発生すると常に新しいスクリーンショットが撮影され、Image(ここでは_browserScreenshotと呼ばれる)コントロールのソースが更新される必要があります。 IsFrozenプロパティの変更に関するエラーが引き続き発生しますが、これを正しく変更して、この方法を希望どおりに動作させる方法がわかりません。事前に感謝します。

役に立ちましたか?

解決

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

他のヒント

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

bitmapSource.Freeze();

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top