6

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

谢谢你。

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

4

5 回答 5

8

渲染位图的唯一方法是使用 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

希望这可以帮助

于 2009-02-21T18:44:19.300 回答
2

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

我遇到过使用 RenderTargetBitmap 会导致图像为空的情况……而 Jamie 的帖子就是我的答案。

希望它也对其他人有所帮助。

于 2009-11-06T20:28:06.530 回答
2

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

千伏

于 2010-01-28T19:52:04.050 回答
1

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

于 2009-02-13T14:00:29.027 回答
0

给你:http ://perspectivefx.codeplex.com/和 GPU 完成的所有工作

于 2013-07-16T11:45:32.510 回答