Save WPF image with Shader effects applied
Asked Answered
E

5

6

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.

Espinal answered 13/2, 2009 at 11:55 Comment(0)
C
8

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

Carlynne answered 21/2, 2009 at 18:44 Comment(3)
its worth pointing out that this will process the effect on the CPU and not on the GPU.Ignatia
Does not work for me.Bunchy
Note that, according to learn.microsoft.com/en-us/dotnet/api/… , this does not work with PS_3_0 shaders. Can confirm.Lesbos
B
2

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.

Baltoslavic answered 6/11, 2009 at 20:28 Comment(0)
D
2

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

Drusy answered 28/1, 2010 at 19:52 Comment(0)
P
1

Since the shader effect is by definition applied on the video card, the only way you can get a copy of it in main memory is to grab it from screen memory. So RenderTargetBitmap is your solution. Is there any particular reason you wanted to avoid it?

Progenitor answered 13/2, 2009 at 14:0 Comment(2)
Hi U62, thanks for your reply. I wanted to avoid it purely for perf. reasons. Thanks.Espinal
classy, you downvote my answer then award a bounty and the accepted answer to someone who tells you the exact same thing over a week later. I love SO, the users really make it what it is...Progenitor
P
0

Here you go: http://perspectivefx.codeplex.com/ and all work done by GPU

Peria answered 16/7, 2013 at 11:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.