public void CreateGaussBlurEffect() { var compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; var backgroundVisual = ElementCompositionPreview.GetElementVisual(imgBackground); var blurEffect = new Microsoft.Graphics.Canvas.Effects.GaussianBlurEffect() { Name = "Blur", Source = new Windows.UI.Composition.CompositionEffectSourceParameter("blur"), BlurAmount = 10 }; var backdropBrush = compositor.CreateBackdropBrush(); var blurEffectFactory = compositor.CreateEffectFactory(blurEffect, new string[] { "Blur.BlurAmount" }); var blurBrush = blurEffectFactory.CreateBrush(); blurBrush.SetSourceParameter("blur", backdropBrush); var blurAnimation = compositor.CreateExpressionAnimation(""); var blurProgress = "Clamp(visual.Translation.Y/-450,0,1)"; blurAnimation.Expression = ("Lerp(0,10," + blurProgress + ")"); blurAnimation.SetReferenceParameter("visual", backgroundVisual); blurBrush.Properties.StartAnimation("Blur.BlurAmount", blurAnimation); var spriteVisual = compositor.CreateSpriteVisual(); spriteVisual.Brush = blurBrush; ElementCompositionPreview.SetElementChildVisual(imgBackground, spriteVisual); var sizeAnimation = compositor.CreateExpressionAnimation("visual.Size"); sizeAnimation.SetReferenceParameter("visual", backgroundVisual); spriteVisual.StartAnimation("Size", sizeAnimation); }
private void MainPage_Loaded(object sender, RoutedEventArgs e) { var visual = ElementCompositionPreview.GetElementVisual(grid); var compositor = visual.Compositor; var rootVisual = compositor.CreateContainerVisual(); ElementCompositionPreview.SetElementChildVisual(grid, rootVisual); ImageLoader.Initialize(compositor); ManagedSurface managedSurface = ImageLoader.Instance.LoadFromUri(new Uri("ms-appx:///assets/demo.jpg")); var imageBrush = compositor.CreateSurfaceBrush(managedSurface.Surface); var effect = new Microsoft.Graphics.Canvas.Effects.HueRotationEffect() { Name = "hueRotation", Source = new CompositionEffectSourceParameter("image") //Source = new CompositionEffectSourceParameter("image") }; var gauss = new Microsoft.Graphics.Canvas.Effects.GaussianBlurEffect() { Name = "gauss", BlurAmount = 10, Source = effect }; var effectFactory = compositor.CreateEffectFactory(gauss, new string[] { "hueRotation.Angle", "gauss.BlurAmount" }); var effectBrush = effectFactory.CreateBrush(); effectBrush.SetSourceParameter("image", imageBrush); var rotationAnimation = compositor.CreateScalarKeyFrameAnimation(); var linearEase = compositor.CreateLinearEasingFunction(); rotationAnimation.InsertKeyFrame(0f, 0); rotationAnimation.InsertKeyFrame(1f, (float)(2 * Math.PI), linearEase); rotationAnimation.Duration = TimeSpan.FromMilliseconds(4000); rotationAnimation.IterationBehavior = Windows.UI.Composition.AnimationIterationBehavior.Forever; effectBrush.StartAnimation("hueRotation.Angle", rotationAnimation); var blurAnimation = compositor.CreateScalarKeyFrameAnimation(); blurAnimation.InsertKeyFrame(0f, 0); blurAnimation.InsertKeyFrame(1f, 10); blurAnimation.Direction = Windows.UI.Composition.AnimationDirection.AlternateReverse; blurAnimation.Duration = TimeSpan.FromMilliseconds(4000); blurAnimation.IterationBehavior = Windows.UI.Composition.AnimationIterationBehavior.Forever; effectBrush.StartAnimation("gauss.BlurAmount", blurAnimation); var spriteVisual = compositor.CreateSpriteVisual(); spriteVisual.Brush = effectBrush; rootVisual.Children.InsertAtTop(spriteVisual); //ElementCompositionPreview.SetElementChildVisual(grid, spriteVisual); var sizeAnimation = compositor.CreateExpressionAnimation("visual.Size"); sizeAnimation.SetReferenceParameter("visual", visual); spriteVisual.StartAnimation("Size", sizeAnimation); var compositeEffect = new Microsoft.Graphics.Canvas.Effects.CompositeEffect(); compositeEffect.Mode = Microsoft.Graphics.Canvas.CanvasComposite.SourceIn; compositeEffect.Sources.Add(new CompositionEffectSourceParameter("mask")); compositeEffect.Sources.Add(new CompositionEffectSourceParameter("image")); var profileVisual = compositor.CreateSpriteVisual(); var compositeEffectFactory = compositor.CreateEffectFactory(compositeEffect); var compositeBrush = compositeEffectFactory.CreateBrush(); compositeBrush.SetSourceParameter("image", imageBrush); var mask = ImageLoader.Instance.LoadFromUri(new Uri("ms-appx:///assets/CircleMask.png")); compositeBrush.SetSourceParameter("mask", mask.Brush); profileVisual.Brush = compositeBrush; rootVisual.Children.InsertAtTop(profileVisual); //ElementCompositionPreview.SetElementChildVisual(grid, profileVisual); var profileSizeAnimation = compositor.CreateExpressionAnimation("visual.Size"); profileSizeAnimation.SetReferenceParameter("visual", visual); profileVisual.StartAnimation("Size", profileSizeAnimation); }