使用着色器效果保存WPF图像

时间:2009-02-13 11:55:10

标签: wpf imaging

我有一个带附加模糊效果的WPF图像控件。 有没有办法保存图像(带模糊)而不使用RenderTargetBitmap?

谢谢。

更新:我现在正在使用派生自System.Windows.Media.Effects.ShaderEffect的新自定义效果。 我想在应用着色器效果的情况下保存我的图像。

5 个答案:

答案 0 :(得分:7)

渲染位图的唯一方法是使用RenderTargetBitmap。

看一下这个例子:

BitmapSource bitmap=GetYourBitmap();
Rectangle r=new Rectangle();
r.Background=new ImageBrush(bitmap);
r.Effect=yourEffect;

Size sz=new Size(bitmap.PixelWidth, bitmap.PixelHeight);
r.Measure(sz);
r.Arrange(new Rect(sz);

var rtb=new RenderTargetBitmap();
rtb.Render(r);
return rtb;//here is your bitmap with effects applied

希望这有帮助

答案 1 :(得分:2)

我知道这是一个古老的问题......但我想我会指点人们看Jamie Rodriguez的帖子(http://blogs.msdn.com/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx)。

我遇到使用RenderTargetBitmap导致空图像的情况...... Jamie的帖子就是我的答案。

希望它也可以帮助别人。

答案 2 :(得分:2)

这也是我想要的。根据这个:http://social.msdn.microsoft.com/Forums/en/wpfprerelease/thread/e2ebf264-e087-4bfe-a69b-24c884675c80 RenderTargetBitmap不使用HW(GPU)来渲染,只使用软件。太遗憾了。

KV

答案 3 :(得分:1)

由于着色器效果是根据定义应用于视频卡,因此在主存储器中获取它的副本的唯一方法是从屏幕内存中获取它。所以RenderTargetBitmap是你的解决方案。你想避免它有什么特别的原因吗?

答案 4 :(得分:0)

在这里:http://perspectivefx.codeplex.com/以及GPU完成的所有工作