gpt4 book ai didi

c# - WPF:如何防止 WriteableBitmap 撕裂?

转载 作者:太空狗 更新时间:2023-10-29 17:54:26 31 4
gpt4 key购买 nike

我正在使用 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 线程将内容写入后台缓冲区。渲染线程从前端缓冲区读取内容并将其复制到显存。使用更改的矩形区域跟踪对后台缓冲区的更改。

当更新被发送到渲染线程时,渲染线程将更改后的矩形从后台缓冲区复制到前台缓冲区。渲染系统控制这种交换以避免死锁和重绘伪像,例如“撕裂”。

我在后台线程上处理图像,然后使用 Dispatcher.BeginInvoke() 调用 WritePixels(),以确保 WritePixels() 在 UI 线程上被调用。

我发现撕裂仍然发生在 WriteableBitmap 上,并且在我正在处理的应用程序中,它看起来很糟糕(它是一个医学成像应用程序)。有什么我可以做的吗?

最佳答案

为了避免撕裂,WriteableBitmap 做了很多工作,但在某些系统配置上这是不可避免的。这主要发生在关闭了 Aero (DWM) 的 Windows XP 或 Vista 上。

关于c# - WPF:如何防止 WriteableBitmap 撕裂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049446/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com