5

我需要对图像执行多项操作,例如,我需要调整图像大小,可能需要填充它以保持纵横比(并绘制背景颜色),并有条件地加盖水印。

我目前BitmapFrame用作在所涉及的方法之间传递的类型。

谁能推荐另一种我应该用来对图像执行增量更新的类型?

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

4

2 回答 2

9

WriteableBitmap当您想要对图像进行增量更新时,它是合适的。两者都BitmapFrame继承WriteableBitmapBitmapSource,并且WriteableBitmap可以使用 any 实例化BitmapSource

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

于 2012-06-14T11:46:34.830 回答
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 方法释放后台缓冲区并允许呈现到屏幕上。

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

于 2012-06-14T11:39:29.443 回答