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