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