Question

J'essaie de mettre à jour un objet Image (_browserScreenshot ci-dessous) en XAML en modifiant l'image source chaque fois qu'un événement détermine que la source doit être mise à jour. En ce moment, j'ai ceci:

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

Ensuite, j'ai un gestionnaire d'événements, comme indiqué:

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

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

Désormais, chaque fois que cet événement se déclenche, une nouvelle capture d'écran est prise et la source du contrôle Image (appelé _browserScreenshot ici) doit être mise à jour. Je continue à avoir une erreur sur la modification de la propriété IsFrozen, mais je n'arrive pas à comprendre comment changer cela correctement et avoir ce travail comme je le souhaite. Merci d'avance à tous.

Était-ce utile?

La solution

Il est fort probable que vous souhaitiez geler l'objet. Le problème que vous rencontrez est que vous voulez créer un BitmapSource complètement nouveau à chaque fois et laisser le récupérateur de place jeter l’ancienne image.

Autres conseils

La ligne suivante s'est avérée être mon problème:

bitmapSource.Freeze ();

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top