提高WPF中图像显示的性能

时间:2018-06-18 00:25:19

标签: c# wpf image

我有从脚本中读取视频帧的代码,只要帧准备好就会调用此方法。

public void output_FrameReady(object sender, FrameStatus e) {
    pos = e.Index;
    VsPlane plane = e.Frame.GetPlane(0);
    Dispatcher.Invoke(() => {
        Host.Source = BitmapSource.Create(
            plane.Width, plane.Height, 96, 96, PixelFormats.Bgr32, null,
            plane.Ptr, plane.Stride * plane.Height, plane.Stride);
    });
    base.PositionChanged();
}

当使用1个线程运行时,如果我删除显示在Image控件中的Dispatcher.Invoke行,则会得到120fps。如果我保留显示,我会得到50fps。

当运行8个线程时,没有显示我得到160fps,显示我得到75fps但是UI非常缓慢。

如何改善这种表现?部分问题是内存传输和显示是在一个线程中完成的,用于在所有8个线程中处理的代码;并且显示器本身非常慢。

0 个答案:

没有答案