我有一个带附加模糊效果的WPF图像控件。 有没有办法保存图像(带模糊)而不使用RenderTargetBitmap?
谢谢。
更新:我现在正在使用派生自System.Windows.Media.Effects.ShaderEffect的新自定义效果。 我想在应用着色器效果的情况下保存我的图像。
答案 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完成的所有工作