我应该使用什么WPF图像类型来执行多个转换

Kha*_*zor 5 c# wpf image-processing

我需要在一个Image上执行多个操作,例如,我需要调整图像的大小,也许填充它以保持纵横比(并绘制背景颜色),并有条件地用水印标记.

我目前正在使用BitmapFrame我在所涉及的方法之间传递的类型.

任何人都可以推荐另一种我应该用于对图像执行增量更新的类型吗?

我可以创建各种图像的组合,虽然我不确定我应该使用哪种类型的图像?

And*_*son 9

WriteableBitmap适用于想要对图像进行增量更新的情况.无论BitmapFrameWriteableBitmap继承BitmapSource,并WriteableBitmap可以使用任何被实例化BitmapSource.

您可能还想查看WriteableBitmapEx库,该库WriteableBitmap为位图操作提供了大量有效的扩展方法.该库适用于WPF应用程序以及Silverlight,WP7和Metro.


Sum*_*dal 6

尝试 WriteableBitmap

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

使用WriteableBitmap类以每帧为基础更新和呈现位图.这对于生成算法内容(例如分形图像)和数据可视化(例如音乐可视化器)非常有用.

要更好地控制更新,以及对后台缓冲区进行多线程访问,请使用以下工作流程.

1.调用Lock方法以保留后台缓冲区以进行更新.

2.通过访问BackBuffer属性获取指向后台缓冲区的指针.

3.将更改写入后台缓冲区.当WriteableBitmap被锁定时,其他线程可能会对后缓冲区写入更改.

4.调用AddDirtyRect方法以指示已更改的区域.

5.调用Unlock方法释放后缓冲区并允许显示到屏幕.

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