在图像上添加模糊效果
Add blur effect on image
我想在用户 tap.User 可以在图像上点击多次的药水上对图像进行模糊效果,当他点击他点击的图像药水时会变得模糊。
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;
}
}
试试这个:
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?
试试这个:
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);
我想在用户 tap.User 可以在图像上点击多次的药水上对图像进行模糊效果,当他点击他点击的图像药水时会变得模糊。
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;
}
}
试试这个:
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?
试试这个:
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);