【问题标题】:Add blur effect on image在图像上添加模糊效果
【发布时间】:2015-07-13 12:21:27
【问题描述】:

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

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

【问题讨论】:

    标签: c# xaml windows-phone-8


    【解决方案1】:

    试试这个:

    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?

    【讨论】:

    • 我想模糊我点击的那部分图像。
    • 相应地调整画布。如果您使用的是 XAML WinRT 应用程序,而不是 silverlight 应用程序。
    • plzz 告诉我如何选择我想要在点击时模糊的所需区域
    【解决方案2】:

    试试这个:

    var blur = new BlurFilter(30);  
    

    编辑:

    要使用 WritableBitmapExtensions 执行 gaussian blur,请执行以下操作(出于某种原因,concolution 不会编辑 writableBitmap,因此您必须再次将其分配给相同的 writableBitmap 才能看到结果):

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

    target = target.Convolute(WriteableBitmapExtensions.KernelGaussianBlur3x3);
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2020-01-07
      相关资源
      最近更新 更多