コード例 #1
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 11; i++)
            {
                var panel = new StackPanel
                {
                    Orientation         = Orientation.Horizontal,
                    VerticalAlignment   = VerticalAlignment.Center,
                    HorizontalAlignment = HorizontalAlignment.Center
                };


                var heartLeft = new Image
                {
                    Height = 50,
                    Width  = 24,
                    Source = (SvgImageSource)this.Resources["LeftHeart"]
                };

                var heartRight = new Image
                {
                    Height = 50,
                    Width  = 24,
                    Source = (SvgImageSource)this.Resources["LeftHeart"],
                    RenderTransformOrigin = new Point(0.5, 0.5),
                    RenderTransform       = new CompositeTransform {
                        ScaleX = -1, ScaleY = 1
                    },
                    Margin = new Thickness(-1, 0, 0, 0)
                };

                panel.Children.Add(heartLeft);
                panel.Children.Add(heartRight);
                Root.Children.Add(panel);

                var c = CompositionFactory.CreateCenteringExpression(1, 0.5);

                //var hl = heartLeft.EnableCompositionTranslation().GetVisual();
                //hl.StartAnimation(c);
                //hl.StartAnimation(CreateFlap(heartLeft));

                //var hr = heartRight.EnableCompositionTranslation().GetVisual();
                //hr.StartAnimation(c);
                //hr.StartAnimation(CreateFlap(heartRight));

                panel.EnableCompositionTranslation();
                PlayDie(panel, _rand.Next(2, 30) / 100d);

                _ = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
                {
                    await Task.Delay(1000);
                    Root.Children.Remove(panel);
                });
            }
        }
コード例 #2
0
        public SunsetView()
        {
            this.InitializeComponent();

            // 1. Init resources
            _rootVisual = this.GetVisual();
            _rand       = new Random();
            var c = _rootVisual.Compositor;

            // 2. Create Brushes
            _grad = c.CreateLinearGradientBrush();
            _grad.ColorStops.Add(c.CreateColorGradientStop(0, MediaExtensions.FromHex("#E500780A")));
            _grad.ColorStops.Add(c.CreateColorGradientStop(0.5f, MediaExtensions.FromHex("#E55D8200")));
            _grad.ColorStops.Add(c.CreateColorGradientStop(1, MediaExtensions.FromHex("#E55D780A")));
            _grad.StartPoint = new Vector2(0, 0);
            _grad.EndPoint   = new Vector2(0, 0.5f);

            _shad       = c.CreateColorBrush();
            _shad.Color = Color.FromArgb(100, 0, 0, 0);

            // 3. Create grass geometry & resources
            _geom        = c.CreateEllipseGeometry();
            _geom.Radius = new Vector2(4, 150);
            _geom.Center = new Vector2(4, 150);
            _cent        = CompositionFactory.CreateCenteringExpression(0.5, 0.5);

            _grassShape           = c.CreateSpriteShape(_geom);
            _grassShape.FillBrush = _grad;

            _shadowShape           = c.CreateSpriteShape(_geom);
            _shadowShape.FillBrush = _shad;

            _grassOffset = c.CreateExpressionAnimation()
                           .SetTarget("Offset")
                           .SetParameter("Root", _rootVisual)
                           .SetExpression("Vector3(Root.Size.X * percent, Root.Size.Y - (this.Target.Size.Y * 0.5f), 0f)");

            _shadowOffset = c.CreateExpressionAnimation()
                            .SetTarget(nameof(Visual.Offset))
                            .SetExpression("Caster.Offset");

            _shadowRotation = c.CreateExpressionAnimation()
                              .SetTarget(nameof(Visual.RotationAngleInDegrees))
                              .SetExpression("Caster.RotationAngleInDegrees");

            // 4. Create blades
            for (int i = 0; i < 250; i++)
            {
                PlantGrassSeed();
            }

            // 5. Create blur for shadow
            CreateBlurLayer();
        }