Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save WPF image with Shader effects applied

Tags:

wpf

imaging

I have a WPF Image control with attached blur effect. Is there a way to save the image (with blur) without using RenderTargetBitmap?

Thank you.

UPDATE: I'm using now new custom effect which derives from System.Windows.Media.Effects.ShaderEffect. I would like to save my image with shader effect applied.

like image 231
Valentin V Avatar asked Feb 13 '09 11:02

Valentin V


3 Answers

the only way you can render the bitmap is using RenderTargetBitmap.

Have a look at this example:

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

Hope this helps

like image 172
Narzanka Avatar answered Nov 18 '22 20:11

Narzanka


I know this is an old question ... but I thought I would point people to Jamie Rodriguez's post (http://blogs.msdn.com/jaimer/archive/2009/07/03/rendertargetbitmap-tips.aspx) on this subject.

I had a situation where using RenderTargetBitmap was resulting in an empty image ... and Jamie's post was the answer for me.

Hope it helps someone else too.

like image 28
cplotts Avatar answered Nov 18 '22 19:11

cplotts


This is something I wanted also. According to this: http://social.msdn.microsoft.com/Forums/en/wpfprerelease/thread/e2ebf264-e087-4bfe-a69b-24c884675c80 RenderTargetBitmap does not use HW (GPU) to render, only software. What a pity.

KV

like image 2
kvik Avatar answered Nov 18 '22 19:11

kvik