WPF性能:重置Image控件的源

时间:2012-05-29 12:34:20

标签: c# .net wpf performance imagesource

我正在使用AForge.NET库定期从我的网络摄像头获取图像数据。出于调试原因,我必须将过滤后的图像绘制到屏幕上。 目前我的主窗体上有6个WPF图像,每一秒我处理一个事件,它给我一个UnmanagedImage,我将其转换为System.Drawing.Bitmap然后转换为BitmapSource - 我的代码看起来像这样:

private void OnImageFiltered(object sender, FilterEventArgs e)
{
    var bitmapSource = e.UnmanagedImage.ToManagedImage().ToBitmapSource();
    pictureBox.Source = bitmapSource;
}

但正如我之前所说,我有6张图像,它会减慢整个程序的速度。 我怎样才能让它更快?

我的ToBitmapSource扩展方法在这里:

public static BitmapSource ToBitmapSource(this System.Drawing.Image source)
{
    System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(source);

    var bitSrc = bitmap.ToBitmapSource();

    bitmap.Dispose();
    bitmap = null;

    return bitSrc;
}

1 个答案:

答案 0 :(得分:0)

很抱歉写了一个答案,但由于声誉不佳,我无法发表评论。

如果问题仍然存在,请使用Freeze方法使BitmapSource只读,并因此可以传递给其他线程。