我正在使用 aWriteableBitmap
以每秒 20 帧左右的速度显示我自己处理的图像。
这个问题(WPF:更有效的显示快速变化的图像的方法?)
和这个问题(如何在没有大量内存分配的情况下显示快速更新的图像?)
表明最好的方法是使用WriteableBitmap
.
的文档WriteableBitmap
表明WritePixels()
在 UI 线程上调用将导致渲染线程重绘图像:
MSDN 文档:
UI 线程将内容写入后台缓冲区。渲染线程从前端缓冲区读取内容并将其复制到显存。通过更改的矩形区域跟踪对后台缓冲区的更改。
< 剪辑 />
当更新发送到渲染线程时,渲染线程将更改的矩形从后缓冲区复制到前缓冲区。渲染系统控制这种交换以避免死锁和重绘工件,例如“撕裂”。
我在后台线程上处理我的图像,然后使用Dispatcher.BeginInvoke()
to call WritePixels()
,以确保WritePixels()
在 UI 线程上调用它。
我发现撕裂仍然会发生WriteableBitmap
,并且在我正在处理的应用程序中,它看起来很糟糕(它是一个医学成像应用程序)。有什么我可以做的吗?