2015-05-04 58 views
9

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

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; 
    } 
} 

回答

0

尝试此一:

var blur = new BlurFilter(30); 

编辑:

要做到gaussian blur与WritableBitmapExtensions执行以下操作(出于某种原因concolution不编辑writableBitmap,所以你必须重新分配它同样writableBitmap看结果):

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

target = target.Convolute(WriteableBitmapExtensions.KernelGaussianBlur3x3); 
2

试试这个:

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: Is there an easy way to scale and blur an BitmapImage for windows phone app?

+0

我想模糊第在我点击的图像部分。 –

+0

相应地调整画布。如果您使用的是XAML WinRT应用程序,则不是Silverlight应用程序。 –

+0

plzz告诉我,如何选择我想要模糊的所需区域 –