void InitCompositionResources(ScrollViewer scroll)
        {
            if (compositor == null)
            {
                compositor = ElementCompositionPreview.GetElementVisual(Flip).Compositor;
            }
            if (scroll == null)
            {
                return;
            }

            ScrollPropSet = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(Viewer);
            if (CenterPointAnimation == null)
            {
                CenterPointAnimation = compositor.CreateExpressionAnimation("Vector3(visual.Size.X/2,visual.Size.Y/2,0)");
            }
            if (ScaleAnimation == null)
            {
                ScaleAnimation = compositor.CreateExpressionAnimation("Clamp(1- (visual.Offset.X + scroll.Translation.X) / visual.Size.X * 0.4, 0f, 1f)");
                //ScaleXAnimation = compositor.CreateExpressionAnimation("scroll.Translation.X % visual.Size.X < 0 ? ( -scroll.Translation.X % visual.Size.X) / visual.Size.X > 0.5 ? ( -scroll.Translation.X % visual.Size.X) / visual.Size.X : 1- ( -scroll.Translation.X % visual.Size.X) / visual.Size.X : 1");
                ScaleAnimation.SetReferenceParameter("scroll", ScrollPropSet);
            }
        }
Ejemplo n.º 2
0
        private void InitializeBlurVisuals()
        {
            var blurEffect = new GaussianBlurEffect()
            {
                Name         = "blur",
                BlurAmount   = 0.0f,
                BorderMode   = EffectBorderMode.Hard,
                Optimization = EffectOptimization.Balanced,
                Source       = new CompositionEffectSourceParameter("source")
            };

            var blurBrush = _compositor.CreateEffectFactory(blurEffect,
                                                            new[] { "blur.BlurAmount" })
                            .CreateBrush();

            blurBrush.SetSourceParameter("source", _compositor.CreateDestinationBrush());

            _blurredBackgroundImageVisual       = _compositor.CreateSpriteVisual();
            _blurredBackgroundImageVisual.Brush = blurBrush;
            _blurredBackgroundImageVisual.Size  = new Vector2((float)Root.ActualWidth, (float)Root.ActualHeight);

            ElementCompositionPreview.SetElementChildVisual(BackgroundImageBlurPanel, _blurredBackgroundImageVisual);
        }
Ejemplo n.º 3
0
        public PhysiologicalInfo()
        {
            GenerateTimings();
            GeneratePoses();
            GeneratePictures();
            this.InitializeComponent();
            Window.Current.CoreWindow.KeyDown += ContentDialog_KeyDown;

            _compositor = ElementCompositionPreview.GetElementVisual(this)?.Compositor;


            var _timer = new DispatcherTimer();

            _timer.Tick += _timer_Tick;
            var t = this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                _timer.Interval = TimeSpan.FromMilliseconds(1000);
                if (!_timer.IsEnabled)
                {
                    _timer.Start();
                }
            });
        }
Ejemplo n.º 4
0
        internal static void TranslateXFrom(this FrameworkElement element, AnimationSettings settings, ref AnimationGroup group)
        {
            group.CreateAnimations(element, settings,
                                   animGroup =>
            {
                var visual = ElementCompositionPreview.GetElementVisual(element);

                // Since Translation doesn't exist as a property on Visual, we try to fetch it from the PropertySet
                if (visual.Properties.TryGetVector3(TargetProperties.Translation, out var translation) == CompositionGetValueStatus.Succeeded)
                {
                    visual.Properties.InsertVector3(TargetProperties.Translation, new Vector3((float)settings.OffsetX, translation.Y, translation.Z));
                }
                else
                {
                    visual.Properties.InsertVector3(TargetProperties.Translation, new Vector3((float)settings.OffsetX, 0f, 0f));
                }

                return(animGroup.CreateScalarAnimation <TranslateXAnimation>(
                           element,
                           settings,
                           to: 0f));
            });
        }
Ejemplo n.º 5
0
        private void BlurifyWithHostBackdrop()
        {
            try
            {
                _compositor      = ElementCompositionPreview.GetElementVisual(_element).Compositor;
                _hostSprite      = _compositor.CreateSpriteVisual();
                _hostSprite.Size = new Vector2((float)_element.ActualWidth, (float)_element.ActualHeight);

                ElementCompositionPreview.SetElementChildVisual(_element, _hostSprite);
                if (_hostBackdrop)
                {
                    _hostSprite.Brush = _compositor.CreateHostBackdropBrush();
                }
                else
                {
                    _hostSprite.Brush = _compositor.CreateBackdropBrush();
                }
            }
            catch (Exception)
            {
                //not CU
            }
        }
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            // Populate the Effect combobox
            IList <ComboBoxItem> effectList = new List <ComboBoxItem>();

            foreach (EffectTypes type in Enum.GetValues(typeof(EffectTypes)))
            {
                ComboBoxItem item = new ComboBoxItem();
                item.Tag     = type;
                item.Content = type.ToString();
                effectList.Add(item);
            }

            EffectSelection.ItemsSource   = effectList;
            EffectSelection.SelectedIndex = 0;

            _hostSprite      = _compositor.CreateSpriteVisual();
            _hostSprite.Size = new Vector2((float)BackgroundGrid.ActualWidth, (float)BackgroundGrid.ActualHeight);

            ElementCompositionPreview.SetElementChildVisual(BackgroundGrid, _hostSprite);

            UpdateEffect();
        }
Ejemplo n.º 7
0
        public void DetachVisual(VisualImage source)
        {
            if (_floatingVisual != null)
            {
                throw new InvalidOperationException("A floating visual is already in use");
            }

            _floatingVisual       = source.ForegroundVisual.Compositor.CreateSpriteVisual();
            _floatingVisual.Size  = source.ForegroundVisual.Size;
            _floatingVisual.Brush = source.ForegroundVisual.Brush;

            // Determine the offset from the host to the source element used in the transition
            var coordinate = source.TransformToVisual(_hostFrame);
            var position   = coordinate.TransformPoint(new Point(0, 0));

            // Set the sprite to that offset relative to the host
            _floatingVisual.Offset = new Vector3((float)position.X + source.ForegroundVisual.Offset.X,
                                                 (float)position.Y + source.ForegroundVisual.Offset.Y, 0);
            _floatingVisualUri = source.ImageUri;

            // Set the sprite as the content under the host
            ElementCompositionPreview.SetElementChildVisual(_hostFrame, _floatingVisual);
        }
        /// <summary>
        /// Update layout and webivew on page load
        /// </summary>
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            _primaryImageOffset   = new Vector3((float)(6 * (CircleCanvas.ActualWidth / 18)), (float)CircleCanvas.ActualHeight / 5, 0);
            _secondaryImageOffset = new Vector3((float)(1 * (CircleCanvas.ActualWidth / 14)), (float)CircleCanvas.ActualHeight / 7, 20);
            _tertiaryImageOffset  = new Vector3((float)(20 * (CircleCanvas.ActualWidth / 30)), (float)CircleCanvas.ActualHeight / 10, 40);

            // Get backing visuals
            _image1 = ElementCompositionPreview.GetElementVisual(Image1);
            _image2 = ElementCompositionPreview.GetElementVisual(Image2);
            _image3 = ElementCompositionPreview.GetElementVisual(Image3);

            // Update XAML element visibility to trigger show animation
            Image1.Visibility = Visibility.Visible;
            Image2.Visibility = Visibility.Visible;
            Image3.Visibility = Visibility.Visible;

            _currentPrimary   = Image1;
            _currentSecondary = Image2;
            _currentTertiary  = Image3;

            UpdateVisualLayout();
            UpdateWebview(_currentPrimary);
        }
        private async void Page_Loaded(object sender, RoutedEventArgs e)
        {
            _backgroundImageVisual     = _compositor.CreateSpriteVisual();
            _imageContainer            = _compositor.CreateContainerVisual();
            _liveCapabilities.Changed += HandleCapabilitiesChanged;

            ElementCompositionPreview.SetElementChildVisual(ImageCanvas, _imageContainer);

            // Load the image
            _surface = await ImageLoader.Instance.LoadFromUriAsync(new Uri("ms-appx:///Assets/Landscapes/Landscape-7.jpg"));

            _surface.Brush.Stretch           = CompositionStretch.Fill;
            _circleMaskSurface               = ImageLoader.Instance.LoadCircle(200, Colors.White);
            _circleMaskSurface.Brush.Stretch = CompositionStretch.Uniform;

            _imageContainer.Size = new Vector2((float)ImageCanvas.ActualWidth, (float)ImageCanvas.ActualHeight);

            _imageContainer.Children.InsertAtTop(_backgroundImageVisual);

            UpdateVisualSizeAndPosition();

            UpdateAlbumArt();
        }
Ejemplo n.º 10
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            if (!_hasInitialLoadedEventFired)
            {
                var root = VisualTreeHelper.GetChild(this, 0) as UIElement;

                _visual = ElementCompositionPreview.GetElementVisual(root);

                _hitTest       = _visual.Compositor.CreateSpriteVisual();
                _hitTest.Brush = _visual.Compositor.CreateColorBrush(Windows.UI.Colors.Transparent);
                _hitTest.RelativeSizeAdjustment = Vector2.One;

                _container = _visual.Compositor.CreateContainerVisual();
                _container.Children.InsertAtBottom(_hitTest);
                _container.RelativeSizeAdjustment = Vector2.One;

                ElementCompositionPreview.SetElementChildVisual(this, _container);

                ConfigureInteractionTracker();
            }

            _hasInitialLoadedEventFired = true;
        }
        private void InitializeView(NativeRatingView view)
        {
            Windows.UI.Xaml.Media.CompositionTarget.Rendering += new EventHandler <object>(DrawRating);
            ratings = new List <SpriteVisual>();

            var hostVisual = ElementCompositionPreview.GetElementVisual(this);

            root = hostVisual.Compositor.CreateContainerVisual();
            ElementCompositionPreview.SetElementChildVisual(this, root);
            compositor = root.Compositor;

            var height          = view.Height;
            var width           = view.Width;
            var spaceForTicks   = width * 0.6;
            var spaceForMargins = width - spaceForTicks;

            var tickWidth  = (float)(spaceForTicks / view.GetMaxRating);
            var tickHeight = (float)(height * 0.6);

            var margin = ((spaceForMargins / (Element.GetMaxRating + 1)));

            float space   = (float)margin;
            float yOffset = (((float)height - tickHeight) / 2);

            brushSelected   = CreateMaskBrush((int)tickWidth, (int)tickHeight, Element.RatingColor.ToWindowsColor());
            brushUnselected = CreateMaskBrush((int)tickWidth, (int)tickHeight, Windows.UI.Color.FromArgb(80, 120, 117, 108));

            for (int i = 0; i < view.GetMaxRating; i++)
            {
                tick        = compositor.CreateSpriteVisual();
                tick.Size   = new Vector2(tickWidth, tickHeight);
                tick.Offset = new Vector3(space, yOffset, 0);
                space      += tickWidth + (float)margin;
                root.Children.InsertAtTop(tick);
                ratings.Add(tick);
            }
        }
Ejemplo n.º 12
0
        private void ItemContainer_Loaded(object sender, RoutedEventArgs e)
        {
            var itemsPanel    = (ItemsWrapGrid)gridviewImages.ItemsPanelRoot;
            var itemContainer = (GridViewItem)sender;
            var itemIndex     = gridviewImages.IndexFromContainer(itemContainer);

            var uc = itemContainer.ContentTemplateRoot as FrameworkElement;

            //Debug.WriteLine(itemContainer.ActualWidth);
            //Debug.WriteLine(itemContainer.ActualHeight);

            //Don't animate if we're not in the visible viewport
            if (itemIndex >= itemsPanel.FirstVisibleIndex && itemIndex <= itemsPanel.LastVisibleIndex)
            {
                var itemVisual = ElementCompositionPreview.GetElementVisual(uc);

                float width  = (float)itemContainer.ActualWidth;
                float height = (float)itemContainer.ActualHeight;
                itemVisual.Size        = new Vector2(width, height);
                itemVisual.CenterPoint = new Vector3(width / 2, height / 2, 1); //GetCenterPoint2(itemContainer, itemContainer.ActualWidth);
                itemVisual.Offset      = new Vector3(0, 25, 0);
                itemVisual.Scale       = new Vector3(1, 1, 0);

                var relativeIndex = itemIndex - itemsPanel.FirstVisibleIndex;

                // Create KeyFrameAnimations

                KeyFrameAnimation scaleXAnimation = compositor.CreateScalarKeyFrameAnimation();
                scaleXAnimation.InsertExpressionKeyFrame(1f, "0", compositor.CreateCubicBezierEasingFunction(new Vector2(0, 0), new Vector2(0.58f, 1)));
                scaleXAnimation.Duration = TimeSpan.FromMilliseconds(200);

                // Start animations
                itemVisual.StartAnimation("Offset.Y", scaleXAnimation);
            }

            itemContainer.Loaded -= ItemContainer_Loaded;
        }
Ejemplo n.º 13
0
        private void InitializeAnimation(FrameworkElement root, Canvas shadowHost)
        {
            var rootVisual = ElementCompositionPreview.GetElementVisual(root);
            var compositor = rootVisual.Compositor;

            #region 阴影
            var shadowHostVisual = ElementCompositionPreview.GetElementVisual(shadowHost);

            //Create shadow and add it to the Visual Tree
            var shadow = compositor.CreateDropShadow();
            shadow.Color = Color.FromArgb(255, 75, 75, 80);
            var shadowVisual = compositor.CreateSpriteVisual();
            shadowVisual.Shadow = shadow;
            ElementCompositionPreview.SetElementChildVisual(shadowHost, shadowVisual);

            var bindSizeAnimation = compositor.CreateExpressionAnimation("hostVisual.Size");
            bindSizeAnimation.SetReferenceParameter("hostVisual", shadowHostVisual);
            shadowVisual.StartAnimation("Size", bindSizeAnimation);
            var shadowAnimation = compositor.CreateExpressionAnimation("100 * (source.Scale.X - 1)");
            shadowAnimation.SetReferenceParameter("source", rootVisual);
            shadow.StartAnimation("BlurRadius", shadowAnimation);
            #endregion

            var pointerEnteredAnimation = compositor.CreateVector3KeyFrameAnimation();
            pointerEnteredAnimation.InsertKeyFrame(1.0f, new Vector3(1.02f));

            var pointerExitedAnimation = compositor.CreateVector3KeyFrameAnimation();
            pointerExitedAnimation.InsertKeyFrame(1.0f, new Vector3(1.0f));

            root.PointerEntered += (sender, args) =>
            {
                //root.Clip = new RectangleGeometry() { Rect = new Rect(0, 0, root.ActualWidth, root.ActualHeight) };
                rootVisual.CenterPoint = new Vector3(rootVisual.Size / 2, 0);
                rootVisual.StartAnimation("Scale", pointerEnteredAnimation);
            };
            root.PointerExited += (sender, args) => rootVisual.StartAnimation("Scale", pointerExitedAnimation);
        }
Ejemplo n.º 14
0
        private void Content_PointerExited(object sender, PointerRoutedEventArgs e)
        {
            var content = ElementCompositionPreview.GetElementVisual(sender as UIElement);

            var compositor      = content.Compositor;
            var offsetAnimation = compositor.CreateScalarKeyFrameAnimation();

            offsetAnimation.InsertKeyFrame(1.0f, 0);
            offsetAnimation.Duration = TimeSpan.FromSeconds(1);
            content.StartAnimation("Offset.Z", offsetAnimation);

            // Animate Shadow (make it smaller)
            var shadow = GetShadowFromContent(sender);
            var shadowScaleAnimation = compositor.CreateVector3KeyFrameAnimation();

            shadowScaleAnimation.InsertKeyFrame(1.0f, new Vector3(1.0f));
            shadowScaleAnimation.Duration = TimeSpan.FromSeconds(.5);
            shadow.Visual.StartAnimation("Scale", shadowScaleAnimation);

            // Animate shadow (change opacity)
            var shadowOpacityAnimation = compositor.CreateScalarKeyFrameAnimation();

            shadowOpacityAnimation.InsertKeyFrame(1.0f, _initialShadowOpacity);
            shadowOpacityAnimation.Duration = TimeSpan.FromSeconds(1);
            shadow.DropShadow.StartAnimation("Opacity", shadowOpacityAnimation);

            // Animate shadow (change blur)
            var shadowBlurAnimation = compositor.CreateScalarKeyFrameAnimation();

            shadowBlurAnimation.InsertKeyFrame(1.0f, _initialShadowBlurRadius);
            shadowBlurAnimation.Duration = TimeSpan.FromSeconds(1);
            shadow.DropShadow.StartAnimation("BlurRadius", shadowBlurAnimation);

            // Set the ZIndex to lowest
            Canvas.SetZIndex((UIElement)sender, 1);
            Canvas.SetZIndex(shadow, 0);
        }
        public static void Clip(this FrameworkElement frameworkElement, Geometry geometry)
        {
            var compositor = Window.Current.Compositor;
            var visual     = ElementCompositionPreview.GetElementVisual(frameworkElement);

            CompositionClip compositionClip = null;

            if (geometry is EllipseGeometry ellipseGeometry)
            {
                var compositionEllipseGeometry = compositor.CreateEllipseGeometry();

                compositionEllipseGeometry.Center = new WVector2((float)ellipseGeometry.Center.X, (float)ellipseGeometry.Center.Y);
                compositionEllipseGeometry.Radius = new WVector2((float)ellipseGeometry.RadiusX, (float)ellipseGeometry.RadiusY);

                compositionClip = compositor.CreateGeometricClip(compositionEllipseGeometry);
            }
            else if (geometry is LineGeometry lineGeometry)
            {
                var compositionLineGeometry = compositor.CreateLineGeometry();

                compositionLineGeometry.Start = new WVector2((float)lineGeometry.StartPoint.X, (float)lineGeometry.StartPoint.Y);
                compositionLineGeometry.End   = new WVector2((float)lineGeometry.EndPoint.X, (float)lineGeometry.EndPoint.Y);

                compositionClip = compositor.CreateGeometricClip(compositionLineGeometry);
            }
            else if (geometry is RectangleGeometry rectangleGeometry)
            {
                var compositionRectangleGeometry = compositor.CreateRectangleGeometry();

                compositionRectangleGeometry.Offset = new WVector2((float)rectangleGeometry.Rect.X, (float)rectangleGeometry.Rect.Y);
                compositionRectangleGeometry.Size   = new WVector2((float)rectangleGeometry.Rect.Width, (float)rectangleGeometry.Rect.Height);

                compositionClip = compositor.CreateGeometricClip(compositionRectangleGeometry);
            }

            visual.Clip = compositionClip;
        }
Ejemplo n.º 16
0
        private void UpdatePerspective()

        {
            Visual visual = ElementCompositionPreview.GetElementVisual(MainPanel);



            // Get the size of the area we are enabling perspective for

            Vector2 sizeList = new Vector2((float)MainPanel.ActualWidth, (float)MainPanel.ActualHeight);



            // Setup the perspective transform.

            Matrix4x4 perspective = new Matrix4x4(

                1.0f, 0.0f, 0.0f, 0.0f,

                0.0f, 1.0f, 0.0f, 0.0f,

                0.0f, 0.0f, 1.0f, -1.0f / sizeList.X,

                0.0f, 0.0f, 0.0f, 1.0f);



            // Set the parent transform to apply perspective to all children

            visual.TransformMatrix =

                Matrix4x4.CreateTranslation(-sizeList.X / 2, -sizeList.Y / 2, 0f) *                     // Translate to origin

                perspective *                                                                           // Apply perspective at origin

                Matrix4x4.CreateTranslation(sizeList.X / 2, sizeList.Y / 2, 0f);                        // Translate back to original position
        }
Ejemplo n.º 17
0
        private void EnsureComposition()
        {
            if (_compositor == null)
            {
                // Get our Compositor and create a SpriteVisual.
                _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;
                _visual     = _compositor.CreateSpriteVisual();

                // Set the size to the size of the page, and make sure to update it whenever
                // the page's size changes.
                _visual.Size = new Vector2((float)ActualWidth, (float)ActualHeight);
                SizeChanged += (s, a) =>
                {
                    _visual.Size = new Vector2((float)ActualWidth, (float)ActualHeight);
                };

                // Attach our visual to the tree.
                ElementCompositionPreview.SetElementChildVisual(this, _visual);

                // Create our HueRotation effect.
                var graphicsEffect = new HueRotationEffect
                {
                    Name   = "HueRotation",
                    Angle  = 0.0f,
                    Source = new CompositionEffectSourceParameter("Video")
                };

                var effectFactory = _compositor.CreateEffectFactory(
                    graphicsEffect,
                    new string[] { "HueRotation.Angle" });

                _effectBrush = effectFactory.CreateBrush();

                // Apply our effect brush to our visual.
                _visual.Brush = _effectBrush;
            }
        }
        public NavigationFlowSourcePage()
        {
            InitializeComponent();


            _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

            var listItems = new List <string>();

            for (int i = 0; i < 300; i++)
            {
                listItems.Add($"Item {i}");
            }
            ItemsGridView.ItemsSource = listItems;

            // Set a fade in animation when this page enters the scene
            var fadeInAnimation = _compositor.CreateScalarKeyFrameAnimation();

            fadeInAnimation.Target   = "Opacity";
            fadeInAnimation.Duration = TimeSpan.FromSeconds(0.3);
            fadeInAnimation.InsertKeyFrame(0, 0);
            fadeInAnimation.InsertKeyFrame(1, 1);

            // Call GetElementVisual() to work around a bug in Insider Build 15025
            ElementCompositionPreview.GetElementVisual(this);
            ElementCompositionPreview.SetImplicitShowAnimation(this, fadeInAnimation);

            // Set a fade out animation when this page exits the scene
            var fadeOutAnimation = _compositor.CreateScalarKeyFrameAnimation();

            fadeOutAnimation.Target   = "Opacity";
            fadeOutAnimation.Duration = TimeSpan.FromSeconds(0.3);
            fadeOutAnimation.InsertKeyFrame(0, 1);
            fadeOutAnimation.InsertKeyFrame(1, 0);

            ElementCompositionPreview.SetImplicitHideAnimation(this, fadeOutAnimation);
        }
 public void InitAnimation(InitOption Option)
 {
     if (compositor != null)
     {
         if (Option == InitOption.AroundImage)
         {
             for (int i = Flip.SelectedIndex > 2 ? Flip.SelectedIndex - 2 : 0; i < Flip.SelectedIndex + 2 && i < Flip.Items.Count; i++)
             {
                 if (Flip.ContainerFromIndex(i) is UIElement Element)
                 {
                     var Visual = ElementCompositionPreview.GetElementVisual(Element);
                     CenterPointAnimation.SetReferenceParameter("visual", Visual);
                     Visual.StartAnimation("CenterPoint", CenterPointAnimation);
                     Visual.StopAnimation("Scale.X");
                     ScaleAnimation.SetReferenceParameter("visual", Visual);
                     Visual.StartAnimation("Scale.X", ScaleAnimation);
                     Visual.StartAnimation("Scale.Y", ScaleAnimation);
                 }
             }
         }
         else
         {
             foreach (var Visual in from Item in Flip.Items
                      let Element = Flip.ContainerFromItem(Item) as UIElement
                                    where Element != null
                                    select ElementCompositionPreview.GetElementVisual(Element))
             {
                 CenterPointAnimation.SetReferenceParameter("visual", Visual);
                 Visual.StartAnimation("CenterPoint", CenterPointAnimation);
                 Visual.StopAnimation("Scale.X");
                 ScaleAnimation.SetReferenceParameter("visual", Visual);
                 Visual.StartAnimation("Scale.X", ScaleAnimation);
                 Visual.StartAnimation("Scale.Y", ScaleAnimation);
             }
         }
     }
 }
Ejemplo n.º 20
0
        private void AssignParallax()
        {
            if (ParallaxContent == null)
            {
                return;
            }
            if (AssociatedObject == null)
            {
                return;
            }

            var scroller = AssociatedObject as ScrollViewer;

            if (scroller == null)
            {
                scroller = VisualHelper.FindChild <ScrollViewer>(AssociatedObject);
            }
            if (scroller == null)
            {
                return;
            }

            CompositionPropertySet scrollerViewerManipulation = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(scroller);

            Compositor compositor = scrollerViewerManipulation.Compositor;

            ExpressionAnimation expression = compositor.CreateExpressionAnimation(ParallaxMultiplier > 0
                ? "ScrollManipulation.Translation.Y * ParallaxMultiplier - ScrollManipulation.Translation.Y"
                : "ScrollManipulation.Translation.Y * ParallaxMultiplier");

            expression.SetScalarParameter("ParallaxMultiplier", (float)ParallaxMultiplier);
            expression.SetReferenceParameter("ScrollManipulation", scrollerViewerManipulation);

            Visual textVisual = ElementCompositionPreview.GetElementVisual(ParallaxContent);

            textVisual.StartAnimation("Offset.Y", expression);
        }
Ejemplo n.º 21
0
        private void InitializeAnimations()
        {
            Visual circleVisual = ElementCompositionPreview.GetElementVisual(CirlceHost);
            float  radius       = (float)CirlceHost.Width / 2.0f;

            circleVisual.CenterPoint = new Vector3(radius, radius, 0);
            Compositor compositor = circleVisual.Compositor;

            var duration       = TimeSpan.FromMilliseconds(360);
            var easingFunction = compositor.CreateCubicBezierEasingFunction(new Vector2(0.3f, 0.3f), new Vector2(0, 1));

            // Show cirlce animations
            var circleShowAnimation = compositor.CreateVector2KeyFrameAnimation();

            circleShowAnimation.InsertKeyFrame(1, Vector2.One);
            circleShowAnimation.InsertKeyFrame(0, Vector2.Zero, easingFunction);
            circleShowAnimation.Duration = duration;
            circleShowAnimation.Target   = "Scale.xy";
            ElementCompositionPreview.SetImplicitShowAnimation(CirlceHost, circleShowAnimation);

            // Show text animation
            var textShowOpacityAnimation = compositor.CreateScalarKeyFrameAnimation();

            textShowOpacityAnimation.InsertKeyFrame(0, 0);
            textShowOpacityAnimation.InsertKeyFrame(1, 1, easingFunction);
            textShowOpacityAnimation.Duration = duration;
            textShowOpacityAnimation.Target   = "Opacity";
            ElementCompositionPreview.SetImplicitShowAnimation(TextGrid, textShowOpacityAnimation);

            var textShowOffsetAnimation = compositor.CreateScalarKeyFrameAnimation();

            textShowOffsetAnimation.InsertKeyFrame(0, -15);
            textShowOffsetAnimation.InsertKeyFrame(1, 0, easingFunction);
            textShowOffsetAnimation.Duration = duration;
            textShowOffsetAnimation.Target   = "Offset.x";
            ElementCompositionPreview.SetImplicitShowAnimation(TranslationElement, textShowOffsetAnimation);
        }
        /// <summary>
        /// Shows the image.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="imageBounds">The image bounds.</param>
        /// <param name="imageUri">The image URI.</param>
        /// <param name="backgroundColor">Color of the background.</param>
        private static async void ShowImage(Page page, Rect imageBounds, Uri imageUri, Color backgroundColor)
        {
            var compositor = ElementCompositionPreview.GetElementVisual(page).Compositor;
            var windowSize = new Vector2((float)Window.Current.Bounds.Width, (float)Window.Current.Bounds.Height);

            //
            // Create a container visual to hold the color fill background and image visuals.
            // Configure this visual to scale from the center.
            //
            var container = compositor.CreateContainerVisual();

            container.Size        = windowSize;
            container.CenterPoint = new Vector3(windowSize.X, windowSize.Y, 0) * .5f;
            ElementCompositionPreview.SetElementChildVisual(page, container);

            //
            // Create the colorfill sprite for the background, set the color to the same as app theme
            //
            var backgroundSprite = compositor.CreateSpriteVisual();

            backgroundSprite.Size  = windowSize;
            backgroundSprite.Brush = compositor.CreateColorBrush(backgroundColor);
            container.Children.InsertAtBottom(backgroundSprite);

            //
            // Create the image sprite containing the splash screen image.  Size and position this to
            // exactly cover the Splash screen image so it will be a seamless transition between the two
            //
            var surface = await SurfaceLoader.LoadFromUri(imageUri);

            var imageSprite = compositor.CreateSpriteVisual();

            imageSprite.Brush  = compositor.CreateSurfaceBrush(surface);
            imageSprite.Offset = new Vector3((float)imageBounds.X, (float)imageBounds.Y, 0f);
            imageSprite.Size   = new Vector2((float)imageBounds.Width, (float)imageBounds.Height);
            container.Children.InsertAtTop(imageSprite);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Update image source transform.
        /// </summary>
        /// <param name="viewport">Viewport</param>
        /// <param name="viewportImageRect"> The real image area of viewport.</param>
        /// <param name="animate">Whether animation is enabled.</param>
        private void UpdateImageLayoutWithViewport(Rect viewport, Rect viewportImageRect, bool animate = false)
        {
            if (!IsValidRect(viewport) || !IsValidRect(viewportImageRect))
            {
                return;
            }

            var imageScale = viewport.Width / viewportImageRect.Width;

            _imageTransform.ScaleX            = _imageTransform.ScaleY = imageScale;
            _imageTransform.TranslateX        = viewport.X - (viewportImageRect.X * imageScale);
            _imageTransform.TranslateY        = viewport.Y - (viewportImageRect.Y * imageScale);
            _inverseImageTransform.ScaleX     = _inverseImageTransform.ScaleY = 1 / imageScale;
            _inverseImageTransform.TranslateX = -_imageTransform.TranslateX / imageScale;
            _inverseImageTransform.TranslateY = -_imageTransform.TranslateY / imageScale;
            var selectedRect = _imageTransform.TransformBounds(_currentCroppedRect);

            _restrictedSelectRect = _imageTransform.TransformBounds(_restrictedCropRect);
            var startPoint = GetSafePoint(_restrictedSelectRect, new Point(selectedRect.X, selectedRect.Y));
            var endPoint   = GetSafePoint(_restrictedSelectRect, new Point(
                                              selectedRect.X + selectedRect.Width,
                                              selectedRect.Y + selectedRect.Height));

            if (animate)
            {
                AnimateUIElementOffset(new Point(_imageTransform.TranslateX, _imageTransform.TranslateY), _animationDuration, _sourceImage);
                AnimateUIElementScale(imageScale, _animationDuration, _sourceImage);
            }
            else
            {
                var targetVisual = ElementCompositionPreview.GetElementVisual(_sourceImage);
                targetVisual.Offset = new Vector3((float)_imageTransform.TranslateX, (float)_imageTransform.TranslateY, 0);
                targetVisual.Scale  = new Vector3((float)imageScale);
            }

            UpdateSelectedRect(startPoint, endPoint, animate);
        }
Ejemplo n.º 24
0
        public DemoPage1()
        {
            //var visual = ElementCompositionPreview.GetElementVisual(this);
            //compositor = visual.Compositor;

            this.InitializeComponent();

            var visual = ElementCompositionPreview.GetElementVisual(this);

            compositor = visual.Compositor;

            ////////////////////////////////////////////////////////////////////////////////////////////////
            //
            // 不需要等 Control.Loaded ,就可以取到他的 Visual
            // 可見 XAML visual tree 與 Composition tree 的產生順序沒有先後之分
            //
            ////////////////////////////////////////////////////////////////////////////////////////////////

            //// 試著取得 [沒有被加至 Visual Tree 的元件] 的 Visual 與 Compositor
            //// 會有問題嗎???
            //var textBlock = new TextBlock();
            //var textBlockVisual = ElementCompositionPreview.GetElementVisual(textBlock);
            //var textBlockCompositor = textBlockVisual.Compositor;
        }
Ejemplo n.º 25
0
        private void GalleryItem_PointerExited(object sender, PointerRoutedEventArgs e)
        {
            var element = ElementCompositionPreview.GetElementVisual((UIElement)sender);

            var scaleAnimation = _compositor.CreateVector3KeyFrameAnimation();

            scaleAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            scaleAnimation.InsertKeyFrame(1f, new Vector3(1f, 1f, 1f));

            element.CenterPoint = new Vector3(275f / 2, 275f / 2, 275f / 2);
            element.StartAnimation("Scale", scaleAnimation);

            var shadowBorder = (Grid)sender;

            ElementCompositionPreview.SetElementChildVisual((UIElement)shadowBorder.FindName("Shadow"), null);

            // Update AmbientLight when the item is no longer hovered on

            var ambientLightColorAnimation = _compositor.CreateColorKeyFrameAnimation();

            ambientLightColorAnimation.Duration = TimeSpan.FromMilliseconds(durationHover);
            ambientLightColorAnimation.InsertKeyFrame(1f, ambientLightColorOff);
            ambientLight.StartAnimation(nameof(AmbientLight.Color), ambientLightColorAnimation);
        }
Ejemplo n.º 26
0
        private void Setup()
        {
            var firstGearVisual = ElementCompositionPreview.GetElementVisual(FirstGear);

            firstGearVisual.Size        = new Vector2((float)FirstGear.ActualWidth, (float)FirstGear.ActualHeight);
            firstGearVisual.AnchorPoint = new Vector2(0.5f, 0.5f);

            for (int i = Container.Children.Count - 1; i > 0; i--)
            {
                Container.Children.RemoveAt(i);
            }

            _x             = 87;
            _y             = 0d;
            _width         = 100;
            _height        = 100;
            _gearDimension = 87;

            Count        = 1;
            _gearVisuals = new List <Visual>()
            {
                firstGearVisual
            };
        }
        private void UpdateSeeAlsoPanelVerticalTranslationAnimation()
        {
            var isEnabled = LayoutVisualStates.CurrentState == LargeLayout;

            ElementCompositionPreview.SetIsTranslationEnabled(seeAlsoPanel, true);

            var targetPanelVisual = ElementCompositionPreview.GetElementVisual(seeAlsoPanel);

            targetPanelVisual.Properties.InsertVector3("Translation", Vector3.Zero);

            if (isEnabled)
            {
                var scrollProperties = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(svPanel);

                var expression = _compositor.CreateExpressionAnimation("ScrollManipulation.Translation.Y * -1");
                expression.SetReferenceParameter("ScrollManipulation", scrollProperties);
                expression.Target = "Translation.Y";
                targetPanelVisual.StartAnimation(expression.Target, expression);
            }
            else
            {
                targetPanelVisual.StopAnimation("Translation.Y");
            }
        }
Ejemplo n.º 28
0
        //</SnippetDoubleTapped>


        //private void SetVideoVisual()
        //{
        //    //<SnippetCompositor>
        //    Visual elementVisual = ElementCompositionPreview.GetElementVisual(_compositionCanvas);
        //    var compositor = elementVisual.Compositor;

        //    _mediaPlayer.SetSurfaceSize(new Size(_compositionCanvas.ActualWidth, _compositionCanvas.ActualHeight));
        //    MediaPlayerSurface surface = _mediaPlayer.GetSurface(compositor);

        //    SpriteVisual spriteVisual = compositor.CreateSpriteVisual();
        //    spriteVisual.Brush = compositor.CreateSurfaceBrush(surface.CompositionSurface);

        //    ElementCompositionPreview.SetElementChildVisual(_compositionCanvas, spriteVisual);
        //    //</SnippetCompositor>
        //}

        private void SetVideoVisualButton_Click(object sender, RoutedEventArgs e)
        {
            //<SnippetCompositor>
            mediaPlayer.SetSurfaceSize(new Size(_compositionCanvas.ActualWidth, _compositionCanvas.ActualHeight));

            var compositor             = ElementCompositionPreview.GetElementVisual(this).Compositor;
            MediaPlayerSurface surface = mediaPlayer.GetSurface(compositor);

            SpriteVisual spriteVisual = compositor.CreateSpriteVisual();

            spriteVisual.Size =
                new System.Numerics.Vector2((float)_compositionCanvas.ActualWidth, (float)_compositionCanvas.ActualHeight);

            CompositionBrush brush = compositor.CreateSurfaceBrush(surface.CompositionSurface);

            spriteVisual.Brush = brush;

            ContainerVisual container = compositor.CreateContainerVisual();

            container.Children.InsertAtTop(spriteVisual);

            ElementCompositionPreview.SetElementChildVisual(_compositionCanvas, container);
            //</SnippetCompositor>
        }
Ejemplo n.º 29
0
        protected override void OnApplyTemplate()
        {
            var gradient = new LinearGradientBrush();

            gradient.StartPoint = new Point(0, 0);
            gradient.EndPoint   = new Point(1, 0);

            for (int i = 0; i < _colors.Length; i++)
            {
                gradient.GradientStops.Add(new GradientStop
                {
                    Color  = _colors[i],
                    Offset = _offsets[i]
                });
            }

            _layoutRoot = (FrameworkElement)GetTemplateChild("LayoutRoot");

            _container = (FrameworkElement)GetTemplateChild("Container");
            _container.PointerPressed  += Thumb_PointerPressed;
            _container.PointerMoved    += Thumb_PointerMoved;
            _container.PointerReleased += Thumb_PointerReleased;

            _thumb = (FrameworkElement)GetTemplateChild("Thumb");

            _thumbVisual             = ElementCompositionPreview.GetElementVisual(_thumb);
            _thumbVisual.CenterPoint = new Vector3(24);
            _thumbVisual.Scale       = new Vector3(0.5f);

            _thumbDrop = (Ellipse)GetTemplateChild("ThumbDrop");

            Background = gradient;
            SetDefault(_value);

            base.OnApplyTemplate();
        }
Ejemplo n.º 30
0
        public BackDrop()
        {
            m_rootVisual = ElementCompositionPreview.GetElementVisual(this as UIElement);
            Compositor   = m_rootVisual.Compositor;

            m_blurVisual = Compositor.CreateSpriteVisual();

#if SDKVERSION_14393
            CompositionEffectBrush brush = BuildBlurBrush();
            brush.SetSourceParameter("source", m_compositor.CreateBackdropBrush());
            m_blurBrush        = brush;
            m_blurVisual.Brush = m_blurBrush;

            BlurAmount = 9;
            TintColor  = Colors.Transparent;
#else
            m_blurBrush        = Compositor.CreateColorBrush(Colors.White);
            m_blurVisual.Brush = m_blurBrush;
#endif
            ElementCompositionPreview.SetElementChildVisual(this as UIElement, m_blurVisual);

            this.Loading  += OnLoading;
            this.Unloaded += OnUnloaded;
        }