我正在使用
这个问题(WPF: More efficient way of displaying quickly-changing images?)和这个问题(How to display quick-updating images without large memory allocation?)表明,最好的方法是使用
我发现即使使用
WriteableBitmap
以每秒约20帧的速度显示我自己处理的图像。这个问题(WPF: More efficient way of displaying quickly-changing images?)和这个问题(How to display quick-updating images without large memory allocation?)表明,最好的方法是使用
WriteableBitmap
。
WriteableBitmap
的文档指出,在UI线程上调用WritePixels()
将导致渲染线程重新绘制图像:
MSDN文档:
UI线程将内容写入后备缓冲区。渲染线程从前缓冲区读取内容并将其复制到视频内存中。对后备缓冲区的更改通过更改的矩形区域进行跟踪。
<snip />
当更新发送到渲染线程时,渲染线程将更改的矩形从后备缓冲区复制到前缓冲区。渲染系统控制此交换以避免死锁和重新绘制伪影,例如"撕裂"。
我在后台线程上处理我的图像,然后使用Dispatcher.BeginInvoke()
调用WritePixels()
,以确保在UI线程上调用WritePixels()
。我发现即使使用
WriteableBitmap
仍会出现"撕裂",并且在我正在开发的应用程序中,它看起来很糟糕(这是一款医学成像应用程序)。有什么可以做的吗?