Example #1
0
        private void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            _rootVisual      = Root.Visual();
            _rootVisual.Size = new Vector2((float)Root.ActualWidth, (float)Root.ActualHeight);

            _pathContainerVisual      = PathContainer.Visual();
            _pathContainerVisual.Size = _rootVisual.Size;

            _compositor = _rootVisual.Compositor;

            //CreateMoreShapes();

            _interactionSource = VisualInteractionSource.Create(_rootVisual);
            _interactionSource.PositionXSourceMode         = InteractionSourceMode.EnabledWithInertia;
            _interactionSource.PositionYSourceMode         = InteractionSourceMode.EnabledWithInertia;
            _interactionSource.IsPositionXRailsEnabled     = false;
            _interactionSource.IsPositionYRailsEnabled     = false;
            _interactionSource.ScaleSourceMode             = InteractionSourceMode.EnabledWithInertia;
            _interactionSource.ManipulationRedirectionMode = VisualInteractionSourceRedirectionMode.CapableTouchpadOnly;

            _tracker = InteractionTracker.CreateWithOwner(_compositor, this);
            _tracker.InteractionSources.Add(_interactionSource);
            _tracker.MaxPosition           = new Vector3(_rootVisual.Size, 0.0f) * 3.0f;
            _tracker.MinPosition           = _tracker.MaxPosition * -1.0f;
            _tracker.MinScale              = 0.9f;
            _tracker.MaxScale              = 12.0f;
            _tracker.ScaleInertiaDecayRate = 0.96f;

            var positionAnimation = _compositor.CreateExpressionAnimation("-t.Position");

            positionAnimation.SetReferenceParameter("t", _tracker);
            _pathContainerVisual.StartAnimation("Offset", positionAnimation);

            var scaleAnimation = _compositor.CreateExpressionAnimation("Vector2(t.Scale, t.Scale)");

            scaleAnimation.SetReferenceParameter("t", _tracker);
            _pathContainerVisual.StartAnimation("Scale.XY", scaleAnimation);
        }