2015-05-04 98 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告訴我,如何選擇我想要模糊的所需區域 –