在图像上添加模糊效果

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;
    }
}
2个回答

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?

我想要模糊我点击的图像部分。 - Ritu Tyagi
根据需要调整画布。如果您正在使用的是 XAML WinRT 应用程序而不是 Silverlight 应用程序。 - Abhishek Dey
请告诉我如何在点击时选择要模糊的所需区域。 - Ritu Tyagi

0
试试这个吧:
var blur = new BlurFilter(30);  

编辑:

使用WritableBitmapExtensions进行高斯模糊,请按照以下步骤操作(由于卷积不会编辑writableBitmap,因此您必须将其再次分配给相同的writableBitmap才能看到结果):

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

或者

target = target.Convolute(WriteableBitmapExtensions.KernelGaussianBlur3x3);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接