Пример #1
0
        public void Close()
        {
            OnClose();

            // Prevent any interaction from happening during the animation
            IsHitTestVisible = false;

            var scale = (ScaleTransform)RenderTransform;

            scale.CenterX = ActualWidth / 2; scale.CenterY = ActualHeight / 2;
            var fadeOut = new DoubleAnimation(0, FadeOutDuration);
            var shrink  = new DoubleAnimation(0.8, FadeOutDuration);

            fadeOut.Completed += delegate
            {
                var manager = (ChildWindowManager)Parent;
                if (manager == null)
                {
                    return;
                }
                manager.Hide(this);
            };
            RenderTransform.BeginAnimation(ScaleTransform.ScaleXProperty, shrink);
            RenderTransform.BeginAnimation(ScaleTransform.ScaleYProperty, shrink);
            BeginAnimation(OpacityProperty, fadeOut, HandoffBehavior.SnapshotAndReplace);
        }
 private void Window_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
 {
     if (((bool)e.NewValue) != true)
     {
         return;
     }
     BeginAnimation(OpacityProperty, new DoubleAnimation(0, 1, TimeSpan.FromMilliseconds(200))
     {
         EasingFunction = new QuadraticEase()
     });
     RenderTransform.BeginAnimation(ScaleTransform.ScaleXProperty, new DoubleAnimation(.5, 1, TimeSpan.FromMilliseconds(500))
     {
         EasingFunction = new ElasticEase()
         {
             Oscillations = 1
         }
     });
     RenderTransform.BeginAnimation(ScaleTransform.ScaleYProperty, new DoubleAnimation(.5, 1, TimeSpan.FromMilliseconds(500))
     {
         EasingFunction = new ElasticEase()
         {
             Oscillations = 1
         }
     });
 }
        private void PerformLayout(object sender, RoutedEventArgs e)
        {
            Point  currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            double onScreenState   = (currentPosition.Y - m_yPosInactive) / (m_yPosActive - m_yPosInactive);

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.ActualHeight;
            double     screenWidth  = mainWindow.ActualWidth;
            double     viewHeight   = ActualHeight;
            double     viewWidth    = ActualWidth;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5 + ConversionHelpers.AndroidToWindowsDip(16));
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;
            double layoutY = m_yPosInactive;

            if (!m_isFirstLayout)
            {
                layoutY = onScreenState * (m_yPosActive - m_yPosInactive) + m_yPosInactive;
            }

            m_isFirstLayout = false;

            var transform = new TranslateTransform(
                -(viewWidth * 0.5 + ConversionHelpers.AndroidToWindowsDip(32)),
                layoutY);

            RenderTransform = transform;
        }
Пример #4
0
        private void PerformLayout(object sender, RoutedEventArgs e)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.MainGrid.ActualHeight;
            double     screenWidth  = mainWindow.MainGrid.ActualWidth;

            double viewHeight = ActualHeight;
            double viewWidth  = ActualWidth;

            double pointWidth  = m_compassPoint.Width;
            double pointHeight = m_compassPoint.Height;

            m_compassPointOffsetX = (viewWidth) * 0.5;
            m_compassPointOffsetY = (viewHeight) * 0.5;

            const double margin = 23.0;

            m_yPosActive   = screenHeight * 0.5 - (viewHeight * 0.5) - (margin);
            m_yPosInactive = screenHeight * 0.5 + viewHeight * 0.5;

            var transform = new TranslateTransform(currentPosition.X, m_isActive ? m_yPosActive : m_yPosInactive);

            RenderTransform = transform;
        }
 /// <summary>
 /// kbd4hire 20090318
 /// Move transformation to view coordindates here.
 /// </summary>
 /// <param name="points"></param>
 /// <returns></returns>
 private IEnumerable <Point2D> convertPoints(IEnumerable <IPoint> points)
 {
     foreach (IPoint2D point in points)
     {
         yield return(RenderTransform.TransformVector(point.X, point.Y));
     }
 }
Пример #6
0
    void InputMaterialProperty()
    {
        if (_propBlock == null)
        {
            _propBlock = new MaterialPropertyBlock();
        }

        if (_renderer == null)
        {
            _renderer = GetComponent <SpriteRenderer>();
        }

        if (_renderTransform == null)
        {
            _renderTransform = GetComponent <RenderTransform>();
        }

        if (_renderer.sharedMaterial?.shader.name == DepthShaderName)
        {
            _renderer.sortingOrder = Mathf.FloorToInt((-_renderTransform.z_weight + 1f) * 100f);
            _renderer.GetPropertyBlock(_propBlock);
            Vector4 spriteRectData = new Vector4(_renderer.sprite.rect.x, _renderer.sprite.rect.y, _renderer.sprite.rect.width, _renderer.sprite.rect.height);

            _propBlock.SetVector("_SpriteRect", spriteRectData);
            _renderer.SetPropertyBlock(_propBlock);
        }
        else
        {
            _renderer.sortingOrder = 300;
        }
    }
Пример #7
0
        /// <inheritdoc />
        protected override Size ArrangeOverride(Size finalSize)
        {
            if (_visualCollection != null)
            {
                var padding = 2.0;
                var adornedElementHeight = AdornedFeatures.ActualHeight;
                var adornedElementWidth  = AdornedFeatures.ActualWidth;
                var x             = 0.0;
                var y             = adornedElementHeight + padding; // by default, appear below target attributes to edit
                var adornerOrigin = RenderTransform.Transform(new Point(0, 0));
                if ((adornerOrigin.X != 0) || (adornerOrigin.Y != 0))
                {
                    // Ensure we position so we're visible, if possible.
                    var adornerLeftEdge   = adornerOrigin.X;
                    var adornerRightEdge  = adornerLeftEdge + _layoutRoot.DesiredSize.Width;
                    var adornerTopEdge    = adornerOrigin.Y + y;
                    var adornerBottomEdge = adornerTopEdge + _layoutRoot.DesiredSize.Height;

                    if (adornerRightEdge > _layer.ActualWidth)
                    {
                        // Nudge to the left enough to keep visible.
                        x = _layer.ActualWidth - adornerRightEdge - padding;
                    }
                    if (adornerBottomEdge > _layer.ActualHeight)
                    {
                        // Place above the adorned element.
                        y = -_layoutRoot.DesiredSize.Height - padding;
                    }
                }

                Rect elementRect = new Rect(x, y, _layoutRoot.DesiredSize.Width, _layoutRoot.DesiredSize.Height);
                _layoutRoot.Arrange(elementRect);
            }
            return(finalSize);
        }
        void UpdateTransformYAnimation(double animationTranformTimeSpan)
        {
            var positionAnimation = AnimationFactory.CreateDoubleAnimation(this, TranslateTransform.YProperty, -_currentYoffSet, durationSpan: TimeSpan.FromMilliseconds(animationTranformTimeSpan), easingFuction: EasingFunction);

            positionAnimation.Completed += PositionYAnimationCompleted;
            RenderTransform.BeginAnimation(TranslateTransform.YProperty, positionAnimation);
        }
Пример #9
0
        private void OnRenderTransformOriginChanged(DependencyPropertyChangedEventArgs e)
        {
            if (RenderTransform.IsNullOrIdentity())
            {
                return;
            }

            InvalidateVisualTransform();
        }
 /// <summary>
 /// kbd4hire 20090318
 /// Move transformation to view coordindates here.
 /// </summary>
 /// <param name="coordinates"></param>
 /// <returns></returns>
 private IEnumerable <Point2D> convertCoordinates(IEnumerable coordinates)
 {
     foreach (ICoordinate coordinate in coordinates)
     {
         yield return(RenderTransform.TransformVector(
                          coordinate[Ordinates.X],
                          coordinate[Ordinates.Y]));
     }
 }
Пример #11
0
        protected override void OnVisualBoundsChanged()
        {
            if (RenderTransform.IsNullOrIdentity())
            {
                return;
            }

            InvalidateVisualTransform();
        }
Пример #12
0
        public void Component_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                if (ParentCircuit.ParentWindow.SelectedTool == "SELECT")
                {
                    if (DragStarted)
                    {
                        Point newPosition = new Point(e.GetPosition(this).X - moveOrigin.X, e.GetPosition(this).Y - moveOrigin.Y);
                        newPosition = RenderTransform.Transform(newPosition);
                        newPosition = new Point(newPosition.X + ComponentPosition.X, newPosition.Y + ComponentPosition.Y);
                        Point snappedPosition = Util.snap(newPosition, Constants.ScaleFactor);
                        ComponentPosition = snappedPosition;
                        Canvas.SetLeft(this, ComponentPosition.X);
                        Canvas.SetTop(this, ComponentPosition.Y);
                    }
                }
            }
            //The below statements handle the case that the mouse is moved over a component
            //while a wire or leaded component is beign placed
            if (Breadboard.StartedWire)
            {
                Point       actualCoord = e.GetPosition(ParentCircuit.ParentWindow.DrawArea);
                Orientation o           = Util.getBestOrientation(Breadboard.WirePointA, actualCoord);
                int         length      = 0;
                if (o == Orientation.Horizontal)
                {
                    length = (int)((actualCoord.X - Breadboard.WirePointA.X) / Constants.ScaleFactor);
                }
                else
                {
                    length = (int)((actualCoord.Y - Breadboard.WirePointA.Y) / Constants.ScaleFactor);
                }
                Breadboard.NewWire.Length          = length;
                Breadboard.NewWire.WireOrientation = o;
                Breadboard.NewWire.Render();
            }
            else if (Breadboard.StartedLeadedComponent)
            {
                Point       actualCoord = e.GetPosition(ParentCircuit.ParentWindow.DrawArea);
                Orientation o           = Util.getBestOrientation(Breadboard.ComponentPointA, actualCoord);
                int         length      = 0;
                if (o == Orientation.Horizontal)
                {
                    length = (int)((actualCoord.X - Breadboard.ComponentPointA.X) / Constants.ScaleFactor);
                }
                else
                {
                    length = (int)((actualCoord.Y - Breadboard.ComponentPointA.Y) / Constants.ScaleFactor);
                }

                Breadboard.NewLeadedComponent.Length      = length;
                Breadboard.NewLeadedComponent.orientation = o;
                Breadboard.NewLeadedComponent.Render();
            }
        }
        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
        {
            var bounds = LayoutInformation.GetLayoutSlot(this);

            if (bounds.Contains(RenderTransform.Transform(hitTestParameters.HitPoint)))
            {
                return(new PointHitTestResult(this, hitTestParameters.HitPoint));
            }
            return(null);
        }
Пример #14
0
        public void AnimateToIntermediateOnScreenState(float onScreenState)
        {
            Point  currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            double viewY           = currentPosition.Y;
            double newY            = m_yPosInactive + (m_yPosActive - m_yPosInactive) * onScreenState;

            if (viewY != newY)
            {
                RenderTransform = new TranslateTransform(currentPosition.X, newY);
            }
        }
Пример #15
0
        protected override Matrix GetVisualTransformOverride()
        {
            if (RenderTransform.IsNullOrIdentity())
            {
                return(Matrix.Identity);
            }

            double offsetX = RenderTransformOrigin.X * RenderSize.Width;
            double offsetY = RenderTransformOrigin.Y * RenderSize.Height;

            return(Matrix.TranslationMatrix(-offsetX, -offsetY) * RenderTransform.Value * Matrix.TranslationMatrix(offsetX, offsetY));
        }
        public void Hide()
        {
            var animation = new DoubleAnimation
            {
                To       = -MenuWidth,
                Duration = TimeSpan.FromMilliseconds(100)
            };

            RenderTransform.BeginAnimation(TranslateTransform.XProperty, animation);
            _isShown = false;
            (FindName("ShadowColumn") as ColumnDefinition).Width = new GridLength(0);
        }
        public void Show()
        {
            var animation = new DoubleAnimation
            {
                To       = 0,
                Duration = TimeSpan.FromMilliseconds(AnimationTime)
            };

            RenderTransform.BeginAnimation(TranslateTransform.XProperty, animation);
            ShadowColumn.Width = new GridLength(10000);

            _isShown = true;
        }
        public void Show()
        {
            var animation = new DoubleAnimation
            {
                From = -MenuWidth * .85, To = 0, Duration = TimeSpan.FromMilliseconds(100)
            };

            RenderTransform.BeginAnimation(TranslateTransform.XProperty, animation);
            _isShown = true;
            var p = Parent as Panel;

            (FindName("ShadowColumn") as ColumnDefinition).Width = new GridLength(10000);
        }
Пример #19
0
        private void Animate(Transform newValue, TransitionSpeed transitionSpeed)
        {
            var duration = TransitionSpeedToDuration(transitionSpeed);

            var matrixAnimation = new MatrixAnimation(newValue.Value, duration, FillBehavior.HoldEnd)
            {
                EasingFunction = GetEasingFunction(transitionSpeed)
            };

            Timeline.SetDesiredFrameRate(matrixAnimation, FrameRate);

            RenderTransform.BeginAnimation(MatrixTransform.MatrixProperty, matrixAnimation, HandoffBehavior.SnapshotAndReplace);
        }
Пример #20
0
        public void UpdateViewPortRect()
        {
            // calc the view port window
            viewPort = new Rect(0, 0, ActualWidth, ActualHeight);
            viewPort = RenderTransform.TransformBounds(viewPort);

            Point topLeft     = RenderTransform.Inverse.Transform(new Point(0, 0));
            Point bottomRight = RenderTransform.Inverse.Transform(new Point(ActualWidth, ActualHeight));

            Rect r = new Rect(topLeft, bottomRight);

            viewPort = r;
        }
        public void UpdateScreenLocation(float x, float y)
        {
            Point currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));

            MainWindow mainWindow   = (MainWindow)Application.Current.MainWindow;
            double     screenHeight = mainWindow.MainGrid.ActualHeight;
            double     screenWidth  = mainWindow.MainGrid.ActualWidth;
            double     marginX      = 25;

            TranslateTransform transform = new TranslateTransform(x - (screenWidth * 0.5f) + (ActualWidth * 0.5f) + marginX,
                                                                  y - (screenHeight * 0.5f));

            RenderTransform = transform;
        }
Пример #22
0
        protected override void OnVisualParentChanged(DependencyObject oldParent)
        {
            // The window is added to the visual tree -> perform a small animation
            var scale = (ScaleTransform)RenderTransform;

            scale.CenterX = Width / 2; scale.CenterY = Height / 2;
            var fadeIn = new DoubleAnimation(0, 1, FadeOutDuration, FillBehavior.Stop);
            var expand = new DoubleAnimation(0.8, 1, FadeOutDuration, FillBehavior.Stop);

            RenderTransform.BeginAnimation(ScaleTransform.ScaleXProperty, expand);
            RenderTransform.BeginAnimation(ScaleTransform.ScaleYProperty, expand);
            BeginAnimation(OpacityProperty, fadeIn);
            base.OnVisualParentChanged(oldParent);
        }
Пример #23
0
        void AnimateIn(object sender, EventArgs args)
        {
            var animation = new DoubleAnimation {
                From           = -Height,
                To             = 0,
                Duration       = AnimationDuration,
                EasingFunction = AnimationEase,
            };

            animation.Completed += BeginTimer;

            RenderTransform.ApplyAnimationClock(TranslateTransform.YProperty,
                                                animation.CreateClock());
        }
        public void Hide()
        {
            var animation = new DoubleAnimation
            {
                To       = GetHidePositionX(),
                Duration = TimeSpan.FromMilliseconds(AnimationTime)
            };

            RenderTransform.BeginAnimation(TranslateTransform.XProperty, animation);
            ShadowColumn.Width = new GridLength(0);

            IsOverlayVisible = false;
            _isShown         = false;
        }
        void Sprite_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
        {
            GeneralTransform gt = TransformToVisual(e.ManipulationContainer).Inverse;

            if (e.PinchManipulation != null)
            {
                if (isnewmanipul)
                {
                    tx           = CT.TranslateX;
                    ty           = CT.TranslateY;
                    r            = CT.Rotation;
                    isnewmanipul = false;
                }
                Point originalCenter = RenderTransform.Transform(gt.Transform(e.PinchManipulation.Original.Center));
                Point newCenter      = RenderTransform.Transform(gt.Transform(e.PinchManipulation.Current.Center));

                CT.TranslateX = tx + newCenter.X - originalCenter.X;
                CT.TranslateY = ty + newCenter.Y - originalCenter.Y;
                CT.Rotation   = r + angleBetween2Lines(
                    gt.Transform(e.PinchManipulation.Current.PrimaryContact),
                    gt.Transform(e.PinchManipulation.Current.SecondaryContact),
                    gt.Transform(e.PinchManipulation.Original.PrimaryContact),
                    gt.Transform(e.PinchManipulation.Original.SecondaryContact)) * (CT.ScaleX * CT.ScaleY > 0 ? 1 : -1);

                //CT.ScaleX=CT.ScaleY*= e.PinchManipulation.DeltaScale;
                double k = e.PinchManipulation.DeltaScale;
                if (firstManipuletion)
                {
                    firstWidth        = Width;
                    firstHeight       = Height;
                    firstManipuletion = false;
                }

                Width  = Math.Min(Width * k, firstWidth * maxZC);
                Height = Math.Min(Height * k, firstHeight * maxZC);
            }
            else
            {
                Point start = RenderTransform.Transform(gt.Transform(new Point(0, 0)));
                Point end   = RenderTransform.Transform(gt.Transform(e.DeltaManipulation.Translation));
                CT.TranslateX += end.X - start.X;
                CT.TranslateY += end.Y - start.Y;
                isnewmanipul   = true;
            }
            e.Handled = true;

            //SetTransform();
            Dispatcher.BeginInvoke(SetTransform);
        }
Пример #26
0
        public void AnimateViewToY(double y)
        {
            var currentPosition = RenderTransform.Transform(new Point(0.0, 0.0));
            var animation       = new DoubleAnimation();

            animation.From           = currentPosition.Y;
            animation.To             = y;
            animation.Duration       = new Duration(TimeSpan.FromMilliseconds(m_stateChangeAnimationTimeMilliseconds));
            animation.EasingFunction = new SineEase();

            var transform = new TranslateTransform(currentPosition.X, currentPosition.Y);

            RenderTransform = transform;
            transform.BeginAnimation(TranslateTransform.YProperty, animation);
        }
Пример #27
0
        protected override void OnLayoutCore(bool changed, int left, int top, int right, int bottom)
        {
            var newSize = new Size(right - left, bottom - top).PhysicalToLogicalPixels();

            base.OnLayoutCore(changed, left, top, right, bottom);

            if (this.Log().IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug))
            {
                this.Log().DebugFormat(
                    "[{0}/{1}] OnLayoutCore({2}, {3}, {4}, {5}) (parent: {5},{6})",
                    GetType(),
                    Name,
                    left, top, right, bottom,
                    MeasuredWidth,
                    MeasuredHeight
                    );
            }

            var previousSize = _actualSize;

            _actualSize = newSize;
            RenderSize  = _actualSize;

            if (
                // If the layout has changed, but the final size has not, this is just a translation.
                // So unless there was a layout requested, we can skip arranging the children.
                (changed && _lastLayoutSize != newSize)

                // Even if nothing changed, but a layout was requested, arrang the children.
                || IsLayoutRequested
                )
            {
                _lastLayoutSize = newSize;

                OnBeforeArrange();

                _layouter.Arrange(new Rect(0, 0, newSize.Width, newSize.Height));

                OnLayoutUpdated();
                OnAfterArrange();
            }

            if (previousSize != newSize)
            {
                SizeChanged?.Invoke(this, new SizeChangedEventArgs(previousSize, newSize));
                RenderTransform?.OnViewSizeChanged(previousSize, newSize);
            }
        }
Пример #28
0
    // Update is called once per frame
    void Update()
    {
        if (Player.CurrentPlayer == null)
        {
            return;
        }

        RenderTransform target = Player.CurrentPlayer.RenderTrasform;

        float   z         = transform.position.z;
        Vector3 targetPos = target.transform.position;

        targetPos.z = z;

        transform.position = Vector3.Lerp(transform.position, targetPos, 4f * Time.deltaTime);
    }
Пример #29
0
        private void GoPage(int pageIndex)
        {
            if (pageIndex > PageCount - 1 || pageIndex < 0)
            {
                return;
            }
            DoubleAnimation moveAnimation = new DoubleAnimation
            {
                To = -(pageIndex) * ActualWidth,
                DecelerationRatio = 0.3,
                AccelerationRatio = 0.3,
                Duration          = TimeSpan.FromMilliseconds(500)
            };

            RenderTransform.BeginAnimation(TranslateTransform.XProperty, moveAnimation);
        }
 private void dispatcherTimer_Tick(object sender, EventArgs e)
 {
     if (!onBlur)
     {
         return;
     }
     try
     {
         Point zero          = new Point(0, 0);
         Point relativePoint = TransformToAncestor(Window).Transform(new Point(0, 0));
         //l.Content = Math.Round(-RenderTransform.Transform(zero).X * 2 + relativePoint.X).ToString();
         blur.Margin = new Thickness((-RenderTransform.Transform(zero).X * 2 + relativePoint.X), -relativePoint.Y, 0, 0);
     }
     catch (InvalidOperationException)
     {
     }
 }