Pergunta

Estou tentando atualizar uma imagem do objeto (_browserScreenshot abaixo) em XAML, alterando a imagem de origem a cada vez que um evento determina a fonte precisa ser atualizada. Agora eu tenho o seguinte:

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

Então eu tenho um manipulador de eventos, como mostrado:

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

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

Agora, sempre que este evento dispara uma nova captura de tela é tomada e a fonte da imagem (chamado _browserScreenshot aqui) controle deve ser atualizado. Eu continuo recebendo um erro sobre a mudança do propery IsFrozen, mas eu não consigo descobrir como mudar isso corretamente e ter esse trabalho do jeito que eu quero. Agradecemos antecipadamente a todos.

Foi útil?

Solução

Em toda a probabilidade você deseja para congelar o objeto. O problema que você tem é que você deseja criar um completamente novo BitmapSource de cada vez e deixar o descarte coletor de lixo da imagem antiga.

Outras dicas

A linha seguinte acabou por ser o meu problema:

bitmapSource.Freeze ();

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top