Esempio n. 1
0
        protected virtual void RaiseDragDelta(DragDeltaGestureEventArgs e)
        {
            var handler = DragDelta;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Esempio n. 2
0
        private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
        {
            if (!IsEnabled)
            {
                return;
            }

            RaiseDragDelta(e);

            //if (CurrentScaleX == 1.0) return;


            //DebugText.Text = string.Format("DragDelta X={0} Y={1} Direction={2}", e.HorizontalChange, e.VerticalChange, e.Direction);

            // Translation is done as the last operation, so no need to move the operation up in composition order
            var img = sender as FrameworkElement;

            if (img == null)
            {
                return;
            }
            var transform = img.RenderTransform as CompositeTransform;

            if (transform == null)
            {
                return;
            }

            if (!CanZoom)
            {
                return;
            }

            var translate = new CompositeTransform
            {
                TranslateX = e.HorizontalChange,
                TranslateY = e.VerticalChange
            };

            ConstrainToParentBounds(img, translate);

            var t = ComposeScaleTranslate(transform, translate);

            img.RenderTransform = t;

            if (DebugText != null)
            {
                DebugText.Text = string.Format("Scale={0}x{1}\nCenter={2}x{3}\nTranslate={4}x{5}", t.ScaleX, t.ScaleY, t.CenterX, t.CenterY, t.TranslateX, t.TranslateY);
            }
        }
Esempio n. 3
0
        private void OnDragDelta(object sender, DragDeltaGestureEventArgs e)
        {
            if (!IsEnabled)
            {
                return;
            }

            _lastDragDeltaEventArgs = e;

            RaiseDragDelta(e);

            //if (CurrentScaleX == 1.0) return;


            //DebugText.Text = string.Format("DragDelta X={0} Y={1} Direction={2}", e.HorizontalChange, e.VerticalChange, e.Direction);

            // Translation is done as the last operation, so no need to move the operation up in composition order
            var img = sender as FrameworkElement;

            if (img == null)
            {
                return;
            }
            var transform = img.RenderTransform as CompositeTransform;

            if (transform == null)
            {
                return;
            }

            CompositeTransform translate = null;

            if (CurrentScaleX == 1.0)
            {
                if (SuppressDrag)
                {
                    return;
                }
                if (_direction == Orientation.Vertical)
                {
                    translate = new CompositeTransform
                    {
                        TranslateX = 0,
                        TranslateY = e.VerticalChange
                    };

                    if (BackgroundPanel != null)
                    {
                        var rootFrameHeight = ((PhoneApplicationFrame)Application.Current.RootVisual).ActualHeight;
                        var deltaY          = Math.Abs(translate.TranslateY + translate.ScaleY * transform.TranslateY + (translate.ScaleY - 1) * (transform.CenterY - translate.CenterY));
                        var opacity         = (rootFrameHeight - deltaY) / rootFrameHeight;
                        var backgroundBrush = (SolidColorBrush)BackgroundPanel.Background;
                        var backgroundColor = backgroundBrush.Color;
                        backgroundColor.A = (byte)(opacity * byte.MaxValue);

                        BackgroundPanel.Opacity = opacity;
                        //BackgroundPanel.Background = new SolidColorBrush(backgroundColor);
                    }

                    img.RenderTransform = ComposeScaleTranslate(transform, translate);
                }
                else if (_direction == Orientation.Horizontal)
                {
                    //translate = new CompositeTransform
                    //{
                    //    TranslateX = e.HorizontalChange,
                    //    TranslateY = 0
                    //};

                    //img.RenderTransform = ComposeScaleTranslate(transform, translate);
                }
            }
            else
            {
                if (!CanZoom)
                {
                    return;
                }

                translate = new CompositeTransform
                {
                    TranslateX = e.HorizontalChange,
                    TranslateY = e.VerticalChange
                };

                ConstrainToParentBounds(img, translate);

                img.RenderTransform = ComposeScaleTranslate(transform, translate);
            }
        }