保存应用了 Shader 效果的 WPF 图像

发布于 2024-07-14 03:33:15 字数 183 浏览 11 评论 0原文

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

谢谢。

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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

Hello爱情风 2024-07-21 03:33:15

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

希望这有帮助

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

皓月长歌 2024-07-21 03:33:15

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

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

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

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.

太阳男子 2024-07-21 03:33:15

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

电压

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

嘦怹 2024-07-21 03:33:15

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

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?

溺渁∝ 2024-07-21 03:33:15

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文