在图像上添加模糊效果

我希望用户点击药水上的图像模糊效果。用户可以在图像上轻击多次,当他点击他点击的图像药水时会变得模糊。

using (var blurfilters = new FilterEffect(source)) { var blur = new BlurFilter(); blurfilters.Filters = new IFilter[] { blur }; var target = new WriteableBitmap((int)img1.ActualWidth, (int)img1.ActualHeight); using (var renderer = new WriteableBitmapRenderer(blurfilters, target)) { await renderer.RenderAsync(); img1.Source = target; } } 

试试这个:

 var blur = new BlurFilter(30); 

编辑:

要使用WritableBitmapExtensions执行高斯模糊 ,请执行以下操作(由于某种原因,concolution不会编辑writableBitmap,因此您必须再次将其分配给相同的writableBitmap以查看结果):

 WriteableBitmap target = new WriteableBitmap((int)img1.ActualWidth, (int)img1.ActualHeight); target = target.Convolute(WriteableBitmapExtensions.KernelGaussianBlur5x5); 

要么

 target = target.Convolute(WriteableBitmapExtensions.KernelGaussianBlur3x3); 

试试这个:

http://www.blendrocks.com/code-blend/2015/1/29/implementing-image-blur-in-a-windows-universal-app

这适用于我的通用应用程序。

有效的代码是:

 private void OnDraw(CanvasControl sender, CanvasDrawEventArgs args) { if (imageLoaded) { using (var session = args.DrawingSession) { session.Units = CanvasUnits.Pixels; double displayScaling = DisplayInformation.GetForCurrentView().LogicalDpi / 96.0; double pixelWidth = sender.ActualWidth * displayScaling; var scalefactor = pixelWidth / image.Size.Width; scaleEffect.Source = this.image; scaleEffect.Scale = new Vector2() { X = (float)scalefactor, Y = (float)scalefactor }; blurEffect.Source = scaleEffect; blurEffect.BlurAmount = Blur; session.DrawImage(blurEffect, 0.0f, 0.0f); } } } 

对于Silverlight应用程序尝试这个:

http://www.dotnetcurry.com/showarticle.aspx?ID=1033

如果您希望高斯模糊,另一个很好的例子是:

WP8:是否有一种简单的方法来缩放和模糊Windows Phone应用程序的BitmapImage?