использование BitmapSource в качестве источника изображения в WPF

StackOverflow https://stackoverflow.com/questions/652068

Вопрос

Я пытаюсь обновить объект Image (_browserScreenshot ниже) в XAML, изменяя исходное изображение каждый раз, когда событие определяет, что источник нуждается в обновлении.Прямо сейчас у меня есть это:

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, но я не могу понять, как изменить это правильно и заставить это работать так, как я хочу.Заранее всем спасибо.

Это было полезно?

Решение

Скорее всего, вы хотите заморозить объект. Проблема в том, что вы хотите каждый раз создавать совершенно новый BitmapSource и позволять сборщику мусора избавляться от старого образа.

Другие советы

Следующая строка оказалась моей проблемой:

BitmapSource.Заморозить ();

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top