예제 #1
0
        private void CreateEffect()
        {
            effect = new Microsoft.Graphics.Canvas.Effects.HueRotationEffect()
            {
                Name   = EffectName,
                Angle  = 0f,
                Source = new CompositionEffectSourceParameter(EffectSource)
            };

            UpdateLevel();
            effectFactory = compositor.CreateEffectFactory(effect, new[] { AngleEffectPath });
        }
예제 #2
0
        public void PlayVideo(StorageFile file)
        {
            player.Source = MediaSource.CreateFromStorageFile(file);
            player.Play();


            var compositor   = ElementCompositionPreview.GetElementVisual(this).Compositor;
            var surface      = player.GetSurface(compositor);
            var surfaceBrush = compositor.CreateSurfaceBrush(surface.CompositionSurface);

            var hueEffect = new Microsoft.Graphics.Canvas.Effects.HueRotationEffect()
            {
                Name   = "Hue",
                Source = new Windows.UI.Composition.CompositionEffectSourceParameter("source")
            };

            var hueFactory = compositor.CreateEffectFactory(hueEffect, new string[] { "Hue.Angle" });
            var hueBrush   = hueFactory.CreateBrush();

            hueBrush.SetSourceParameter("source", surfaceBrush);



            var spriteVisual = compositor.CreateSpriteVisual();

            spriteVisual.Brush = surfaceBrush;

            ElementCompositionPreview.SetElementChildVisual(GridContent, spriteVisual);
            GridContent.SizeChanged += (o, e) =>
            {
                spriteVisual.Size = new System.Numerics.Vector2((float)e.NewSize.Width, (float)e.NewSize.Height);
            };

            var hueAnimation = compositor.CreateScalarKeyFrameAnimation();

            hueAnimation.Duration = TimeSpan.FromMilliseconds(1000);
            hueAnimation.InsertKeyFrame(0f, (float)(0));
            hueAnimation.InsertKeyFrame(1f, (float)(2 * Math.PI));
            hueAnimation.IterationBehavior = Windows.UI.Composition.AnimationIterationBehavior.Forever;
            hueAnimation.StopBehavior      = Windows.UI.Composition.AnimationStopBehavior.SetToInitialValue;

            //hueBrush.Properties.StartAnimation("Hue.Angle", hueAnimation);
        }
예제 #3
0
        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);
        }
예제 #4
0
        private void CreateEffect()
        {
            effect = new Microsoft.Graphics.Canvas.Effects.HueRotationEffect()
            {
                Name = EffectName,
                Angle = 0f,
                Source = new CompositionEffectSourceParameter(EffectSource)
            };

            UpdateLevel();
            effectFactory = compositor.CreateEffectFactory(effect, new[] { AngleEffectPath });
        }