コード例 #1
0
 private void ZoomIn(object sender, PinchGestureEventArgs e)
 {
     if (e.DistanceRatio > 1.5 && orderAccepted)
     {
         NavigationService.Navigate(new Uri(string.Format("/Order.xaml"), UriKind.Relative));
     }
 }
コード例 #2
0
        /// <summary>
        /// Computes the scaling and translation to correctly zoom around your fingers.
        /// </summary>
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            var scaleFactor = e.DistanceRatio / _oldScaleFactor;

            if (!IsScaleValid(scaleFactor))
            {
                return;
            }

            var currentFinger1 = e.GetPosition(CameraImage, 0);
            var currentFinger2 = e.GetPosition(CameraImage, 1);

            var translationDelta = GetTranslationDelta(
                currentFinger1,
                currentFinger2,
                _oldFinger1,
                _oldFinger2,
                ImagePosition,
                scaleFactor);

            _oldFinger1     = currentFinger1;
            _oldFinger2     = currentFinger2;
            _oldScaleFactor = e.DistanceRatio;

            UpdateImageScale(scaleFactor);
            UpdateImagePosition(translationDelta);
        }
コード例 #3
0
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            double distanceRatio = e.DistanceRatio;
            var    image         = sender as System.Windows.Controls.Image;

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

            if (transform == null)
            {
                return;
            }
            if (initialScale * e.DistanceRatio * image.ActualHeight > 8 * image.ActualHeight)
            {
                distanceRatio = 8.0;
            }

            if (initialScale * e.DistanceRatio * image.ActualHeight < image.ActualHeight / 2)
            {
                distanceRatio = 1.0;
            }

            transform.ScaleX = initialScale * distanceRatio;
            transform.ScaleY = initialScale * distanceRatio;
            if (e.DistanceRatio > 1.0 || e.DistanceRatio < 1.0)
            {
                isOrizinal = false;
            }
        }
コード例 #4
0
        /// <summary>
        /// Computes the scaling and translation to correctly zoom around your fingers.
        /// </summary>
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            var scaleFactor = e.DistanceRatio / _oldScaleFactor;

            if (totalImageScale * scaleFactor < 1)
            {
                isRestore = true;
            }
            else
            {
                isRestore = false;
                if (totalImageScale * scaleFactor > MAX_IMAGE_ZOOM)
                {
                    return;
                }
            }
            var currentFinger1   = e.GetPosition(FileImage, 0);
            var currentFinger2   = e.GetPosition(FileImage, 1);
            var translationDelta = GetTranslationDelta(currentFinger1, currentFinger2, _oldFinger1, _oldFinger2, imagePosition, scaleFactor);

            _oldFinger1     = currentFinger1;
            _oldFinger2     = currentFinger2;
            _oldScaleFactor = e.DistanceRatio;
            UpdateImageScale(scaleFactor);
            if (isRestore) //image's total reduction is < 1
            {
                imagePosition.X = (FileImage.ActualWidth * (1 - scaleFactor * totalImageScale)) / 2;
                imagePosition.Y = (FileImage.ActualHeight * (1 - scaleFactor * totalImageScale)) / 2;
                ApplyPosition();
            }
            else
            {
                UpdateImagePosition(translationDelta);
            }
        }
コード例 #5
0
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            if (isAnimating)
            {
                return;
            }

            var scaleFactor = e.DistanceRatio / oldScaleFactor;

            if (!IsScaleValid(scaleFactor))
            {
                return;
            }

            var currentFinger1 = e.GetPosition(_content, 0);
            var currentFinger2 = e.GetPosition(_content, 1);

            var translationDelta = GetTranslationDelta(currentFinger1, currentFinger2, scaleFactor);

            oldFinger1     = currentFinger1;
            oldFinger2     = currentFinger2;
            oldScaleFactor = e.DistanceRatio;

            UpdateScale(scaleFactor);
            UpdatePosition(translationDelta);

            e.Handled = true;
        }
コード例 #6
0
ファイル: Photo.xaml.cs プロジェクト: borewicz/gplus-wp7
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            // If its less that the original  size or more than 4x then don’t apply
            if (InitialScale * e.DistanceRatio > 4 || (InitialScale != 1 && e.DistanceRatio == 1) || InitialScale * e.DistanceRatio < 1)
            {
                return;
            }

            // If its original size then center it back
            if (e.DistanceRatio <= 1.08)
            {
                ImageTransformation.CenterY    = 0;
                ImageTransformation.CenterY    = 0;
                ImageTransformation.TranslateX = 0;
                ImageTransformation.TranslateY = 0;
            }

            ImageTransformation.CenterX = Center.X;
            ImageTransformation.CenterY = Center.Y;

            // Update the rotation and scaling
            if (this.Orientation == PageOrientation.Landscape)
            {
                // When in landscape we need to zoom faster, if not it looks choppy
                ImageTransformation.ScaleX = InitialScale * (1 + (e.DistanceRatio - 1) * 2);
            }
            else
            {
                ImageTransformation.ScaleX = InitialScale * e.DistanceRatio;
            }
            ImageTransformation.ScaleY = ImageTransformation.ScaleX;
        }
コード例 #7
0
ファイル: MainPage.xaml.cs プロジェクト: HydroRifle/WPMDP
        private void OnPinchCompleted(object sender, PinchGestureEventArgs e)
        {
            //flickData.Text = string.Format(" OnPinchCompleted: Angle = {0}, Distance = {1}",
            //  e.DistanceRatio, e.TotalAngleDelta);

            // Collapse PageTitle
            PageTitleCollapse();
        }
コード例 #8
0
ファイル: MainPage.xaml.cs プロジェクト: HydroRifle/WPMDP
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            transform.Rotation = initialAngle + e.TotalAngleDelta;
            transform.ScaleX   = transform.ScaleY = initialScale * e.DistanceRatio;

            //flickData.Text = string.Format(" OnPinchDelta: Angle = {0}, Distance = {1}",
            //  e.DistanceRatio, e.TotalAngleDelta);
        }
コード例 #9
0
        private void gesture_PinchCompleted(object sender, PinchGestureEventArgs e)
        {
            var point  = e.GetPosition(ContentPanel, 0);
            var point2 = e.GetPosition(ContentPanel, 1);

            message.Text = string.Format("pinch completed at ({0},{1}) and ({1},{2}) with angle delta {3} and distance ratio {4}",
                                         point.X, point.Y, point2.X, point2.Y, e.TotalAngleDelta, e.DistanceRatio);
        }
コード例 #10
0
 private void OnGestureListenerPinchCompleted(object sender, PinchGestureEventArgs args)
 {
     if (this.transform.ScaleX < 1.0)
     {
         this.transform.ScaleX     = this.transform.ScaleY = 1.0;
         this.transform.TranslateX = this.transform.TranslateY = 0.0;
     }
 }
コード例 #11
0
ファイル: Game.xaml.cs プロジェクト: ITmind/PokemonMadjong
 void gl_PinchDelta(object sender, PinchGestureEventArgs e)
 {
     scale.ScaleX = _initialScale * e.DistanceRatio;
     scale.ScaleY = scale.ScaleX;
     //ContentPanel.Width = 800 * scale.ScaleX;
     //ContentPanel.Height = 480 * scale.ScaleX;
     //UpdateLayout();
 }
コード例 #12
0
 private void OnPinchCompleted(object sender, PinchGestureEventArgs e)
 {
     if (isRestore)
     {
         ResetImagePosition();
     }
     isRestore = false;
 }
コード例 #13
0
 void OnGestureListenerPinchCompleted(object sender, PinchGestureEventArgs args)
 {
     if (isPinching)
     {
         TransferTransforms();
         isPinching = false;
     }
 }
コード例 #14
0
 private void GestureListener_OnPinchCompleted(object sender, PinchGestureEventArgs e)
 {
     if (UseAccelerometer || LoadPopup.IsOpen || SavePopup.IsOpen || HelpPopup.IsOpen ||
         MusicPopup.IsOpen || ChatPopup.IsOpen)
     {
         return;
     }
     PlayChatSound("random");
 }
コード例 #15
0
ファイル: MainPage.xaml.cs プロジェクト: shegg77/Contacts
        private void ListPinch_PinchCompleted_1(object sender, PinchGestureEventArgs e)
        {
            //MessageBox.Show("Pinch COMPLETED");
            ContactList.LayoutMode   = LongListSelectorLayoutMode.Grid;
            ContactList.GridCellSize = new Size(150, 150);
            ContactList.ItemTemplate = ContactListGrid;

            // Uses Headers or not
        }
コード例 #16
0
 private void OnGestureListenerPinchDelta(object sender, PinchGestureEventArgs args)
 {
     this.transform.ScaleY = this.transform.ScaleX = this.initialScale * args.DistanceRatio;
     if (this.transform.ScaleX > 1.0)
     {
         this.transform.TranslateX = this.ComputeTranslateX(this.transform.TranslateX, this.transform.ScaleX);
         this.transform.TranslateY = this.ComputeTranslateY(this.transform.TranslateY, this.transform.ScaleY);
     }
 }
コード例 #17
0
 private void ZoomOut(object sender, PinchGestureEventArgs e)
 {
     if (e.DistanceRatio < 0.5)
     {
         if (NavigationService.CanGoBack)
         {
             NavigationService.GoBack();
         }
     }
 }
コード例 #18
0
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            // if its less that the original  size or more than 4x then does not apply
            if (initialScale * e.DistanceRatio > 4 ||
                (Math.Abs(initialScale - 1) > 0.01 && Math.Abs(e.DistanceRatio - 1) < 0.01) ||
                initialScale * e.DistanceRatio < 1)
            {
                return;
            }

            // if its original size then center it back
            if (e.DistanceRatio <= 1.08)
            {
                ImageTransformation.CenterY    = 0;
                ImageTransformation.CenterY    = 0;
                ImageTransformation.TranslateX = 0;
                ImageTransformation.TranslateY = 0;
            }

            var scaleFactor = e.DistanceRatio / _oldScaleFactor;

            var currentFinger1 = e.GetPosition(DetailImage, 0);
            var currentFinger2 = e.GetPosition(DetailImage, 1);

            var translationDelta = GetTranslationDelta(
                currentFinger1,
                currentFinger2,
                _oldFinger1,
                _oldFinger2,
                ImagePosition,
                scaleFactor);

            _oldFinger1     = currentFinger1;
            _oldFinger2     = currentFinger2;
            _oldScaleFactor = e.DistanceRatio;

            UpdateImage(scaleFactor, translationDelta);

            ImageTransformation.CenterX = center.X;
            ImageTransformation.CenterY = center.Y;

            //// update the rotation and scaling
            //if (Orientation == PageOrientation.Landscape)
            //{
            //    // when in landscape we need to zoom faster, if not it looks choppy
            //    ImageTransformation.ScaleX = initialScale * (1 + (e.DistanceRatio - 1) * 2);
            //}
            //else
            //{
            //    ImageTransformation.ScaleX = initialScale * e.DistanceRatio;
            //}
            //ImageTransformation.ScaleY = ImageTransformation.ScaleX;
        }
コード例 #19
0
ファイル: Image.xaml.cs プロジェクト: apalsapure/wp-galleria
        private void OnPinchDelta(object s, PinchGestureEventArgs e)
        {
            var newScale         = e.DistanceRatio / _previousScale;
            var currentFingerOne = e.GetPosition(MyImage, 0);
            var currentFingerTwo = e.GetPosition(MyImage, 1);
            var translationDelta = GetTranslationOffset(currentFingerOne,
                                                        currentFingerTwo, _fingerOne, _fingerTwo, _imageTranslation, newScale);

            _fingerOne     = currentFingerOne;
            _fingerTwo     = currentFingerTwo;
            _previousScale = e.DistanceRatio;
            UpdatePicture(newScale, translationDelta);
        }
コード例 #20
0
        void OnLayoutPinchDelta(object sender, PinchGestureEventArgs e)
        {
            if (_measurePinch)
            {
                double scale = Math.Min(1.0, e.DistanceRatio);
                scale = Math.Max(0.5, scale);

                var transform = PageViewPanel.RenderTransform as CompositeTransform;

                transform.ScaleX = scale;
                transform.ScaleY = scale;
            }
        }
コード例 #21
0
        private void EditorImage_PinchDelta(object sender, PinchGestureEventArgs e)
        {
            if (this.selectedMode == MODE_SCROLL)
            {
                e.Handled = true;

                double scale  = this.initialScale * e.DistanceRatio;
                double width  = this.editedBitmap.PixelWidth * scale;
                double height = this.editedBitmap.PixelHeight * scale;

                if ((width >= this.EditorGrid.ActualWidth || height >= this.EditorGrid.ActualHeight) &&
                    (width <= MAX_IMAGE_WIDTH && height <= MAX_IMAGE_HEIGHT))
                {
                    this.currentScale = scale;

                    double x = this.EditorImageTransform.TranslateX;
                    double y = this.EditorImageTransform.TranslateY;

                    if (x < this.EditorGrid.ActualWidth - this.EditorImage.ActualWidth * this.currentScale)
                    {
                        x = this.EditorGrid.ActualWidth - this.EditorImage.ActualWidth * this.currentScale;
                    }
                    if (x > 0.0)
                    {
                        x = 0.0;
                    }

                    if (y < this.EditorGrid.ActualHeight - this.EditorImage.ActualHeight * this.currentScale)
                    {
                        y = this.EditorGrid.ActualHeight - this.EditorImage.ActualHeight * this.currentScale;
                    }
                    if (y > 0.0)
                    {
                        y = 0.0;
                    }

                    this.EditorImageTransform.TranslateX = x;
                    this.EditorImageTransform.TranslateY = y;
                    this.EditorImageTransform.ScaleX     = this.currentScale;
                    this.EditorImageTransform.ScaleY     = this.currentScale;

                    int brush_width = Math.Max(1, Math.Min(Math.Min((int)(this.brushRadius / this.currentScale) * 2, this.editedBitmap.PixelWidth), this.editedBitmap.PixelHeight));

                    this.brushBitmap = this.brushTemplateBitmap.Resize(brush_width, brush_width, WriteableBitmapExtensions.Interpolation.NearestNeighbor);

                    UpdateSamplingPointImage();
                }
            }
        }
コード例 #22
0
ファイル: ImageBrowse.xaml.cs プロジェクト: obfan/WP7Fanfou
        private void OnGestureListenerPinchDelta(object sender, PinchGestureEventArgs args)
        {
            if (_isPinching)
            {
                // Set scaling
                scaleTransform.ScaleX = args.DistanceRatio;
                scaleTransform.ScaleY = args.DistanceRatio;
                rotateTransform.Angle = args.TotalAngleDelta;

                // Set translation
                Point ptPinchPosition = args.GetPosition(this);
                translateTransform.X = ptPinchPosition.X - _ptPinchPositionStart.X;
                translateTransform.Y = ptPinchPosition.Y - _ptPinchPositionStart.Y;
            }
        }
コード例 #23
0
        private void ZoomText(object sender, PinchGestureEventArgs e)
        {
            if (!_allowZoom)
            {
                return;
            }

            // ratio = start / finish
            var ratio = e.DistanceRatio;

            // if pinching in
            if (ratio > 1)
            {
                PageManager.ZoomIn();
            }
            else
            {
                PageManager.ZoomOut();
            }
        }
コード例 #24
0
        private void OnPinchDelta(object s, PinchGestureEventArgs e)
        {
            var scaleFactor = e.DistanceRatio / _oldScaleFactor;

            var currentFinger1 = e.GetPosition(MainImage, 0);
            var currentFinger2 = e.GetPosition(MainImage, 1);

            var translationDelta = GetTranslationDelta(
                currentFinger1,
                currentFinger2,
                _oldFinger1,
                _oldFinger2,
                ImagePosition,
                scaleFactor);

            _oldFinger1     = currentFinger1;
            _oldFinger2     = currentFinger2;
            _oldScaleFactor = e.DistanceRatio;

            UpdateImage(scaleFactor, translationDelta);
        }
コード例 #25
0
        void OnGestureListenerPinchDelta(object sender, PinchGestureEventArgs args)
        {
            if (!isPinching)
            {
                return;
            }
            //if (args.DistanceRatio < 0.7) return;
            // Set scaling
            scaleTransform.ScaleX = args.DistanceRatio;
            scaleTransform.ScaleY = args.DistanceRatio;

            // Optionally set rotation
            //if (allowRotateCheckBox.IsChecked.Value)
            //    rotateTransform.Angle = args.TotalAngleDelta;

            // Set translation
            Point ptPinchPosition = args.GetPosition(this);

            translateTransform.X = ptPinchPosition.X - ptPinchPositionStart.X;
            translateTransform.Y = ptPinchPosition.Y - ptPinchPositionStart.Y;
        }
コード例 #26
0
        void OnLayoutPinchCompleted(object sender, PinchGestureEventArgs e)
        {
            if (this._measurePinch)
            {
                this._measurePinch             = false;
                PageManager.IgnoreInteractions = false;

                if (e.DistanceRatio < 0.5)
                {
                    ShowPostJumpList(this, null);
                }

                else
                {
                    var    transform = PageViewPanel.RenderTransform as CompositeTransform;
                    double startX    = transform.ScaleX;
                    double startY    = transform.ScaleY;
                    double endX      = 1.0;
                    double endY      = 1.0;

                    DoubleAnimation scaleX = new DoubleAnimation()
                    {
                        From = startX, To = endX, Duration = TimeSpan.FromMilliseconds(250), FillBehavior = FillBehavior.HoldEnd
                    };
                    DoubleAnimation scaleY = new DoubleAnimation()
                    {
                        From = startY, To = endY, Duration = TimeSpan.FromMilliseconds(250), FillBehavior = FillBehavior.HoldEnd
                    };

                    Storyboard scale = new Storyboard();
                    Storyboard.SetTarget(scaleX, transform);
                    Storyboard.SetTargetProperty(scaleX, new PropertyPath("ScaleX"));
                    Storyboard.SetTarget(scaleY, transform);
                    Storyboard.SetTargetProperty(scaleY, new PropertyPath("ScaleY"));
                    scale.Children.Add(scaleX);
                    scale.Children.Add(scaleY);
                    scale.Begin();
                }
            }
        }
コード例 #27
0
        private void OnPinchDelta(object sender, PinchGestureEventArgs e)
        {
            if (!CanZoom)
            {
                return;
            }

            var frameworkElement = sender as FrameworkElement;
            var transform        = frameworkElement.RenderTransform as CompositeTransform;
            var a = transform.Transform(e.GetPosition(frameworkElement, 0)); // we need the points to be relative to the current transform
            var b = transform.Transform(e.GetPosition(frameworkElement, 1));

            var scale = new CompositeTransform
            {
                CenterX = (a.X + b.X) / 2,
                CenterY = (a.Y + b.Y) / 2,
                ScaleX  = Clamp(e.DistanceRatio * _initialScale / _old.ScaleX,
                                MinZoom / _old.ScaleX,
                                MaxZoom / _old.ScaleX),
                ScaleY = Clamp(e.DistanceRatio * _initialScale / _old.ScaleY,
                               MinZoom / _old.ScaleY,
                               MaxZoom / _old.ScaleY)
            };

            ConstrainToParentBounds(frameworkElement, scale);

            transform = ComposeScaleTranslate(transform, scale);
            frameworkElement.RenderTransform = transform;

            _old.CenterX    = transform.CenterX;
            _old.CenterY    = transform.CenterY;
            _old.TranslateX = transform.TranslateX;
            _old.TranslateY = transform.TranslateY;
            _old.ScaleX     = transform.ScaleX;
            _old.ScaleY     = transform.ScaleY;

            CurrentScaleX = _old.ScaleX;
            CurrentScaleY = _old.ScaleY;
        }
コード例 #28
0
 private void OnPinchCompleted(object sender, PinchGestureEventArgs e)
 {
     border.Background = normalBrush;
 }
コード例 #29
0
 private void OnPinchDelta(object sender, PinchGestureEventArgs e)
 {
     transform.Rotation = initialAngle + e.TotalAngleDelta;
     transform.ScaleX   = transform.ScaleY = initialScale * e.DistanceRatio;
 }
コード例 #30
0
 private void OnPinchDelta(object sender, PinchGestureEventArgs e)
 {
     MyMustacheTransformation.Rotation = _initialAngle + e.TotalAngleDelta;
     MyMustacheTransformation.ScaleX   = _initialScale * e.DistanceRatio;
     MyMustacheTransformation.ScaleY   = _initialScale * e.DistanceRatio;
 }