Example #1
0
        private void ZoomControl_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            bool handle = (Keyboard.Modifiers & ModifierKeys.Control) > 0 && ModifierMode == ZoomViewModifierMode.None;

            if (!handle)
            {
                return;
            }

            e.Handled = true;
            Point origoPosition = new Point(ActualWidth / 2, ActualHeight / 2);
            Point mousePosition = e.GetPosition(this);

            DoZoom(
                Math.Max(1 / MaxZoomDelta, Math.Min(MaxZoomDelta, e.Delta / 10000.0 * ZoomDeltaMultiplier + 1)),
                origoPosition,
                mousePosition,
                mousePosition);
        }
        private void Image_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            double scaleStep     = 1.1;
            var    scale         = (e.Delta > 0) ? scaleStep : (1 / scaleStep);
            var    prevTransform = Image.RenderTransform;

            var mousePosition = e.GetPosition(this);

            var scaleTransform = new ScaleTransform(scale, scale, mousePosition.X, mousePosition.Y);

            TransformGroup group = new TransformGroup();

            group.Children.Add(prevTransform);
            group.Children.Add(scaleTransform);

            var matrix = group.Value;

            Image.RenderTransform = new MatrixTransform(matrix);
        }
Example #3
0
        /// <summary>
        /// 滚轮放大缩小事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MyConvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            //Point scaleCenter = e.GetPosition((Canvas)sender);
            Point scaleCenter = e.GetPosition(outContainer);

            if (e.Delta > 0)
            {
                scaleLevel *= 1.08;
            }
            else
            {
                scaleLevel /= 1.08;
            }
            totalScale.ScaleX  = scaleLevel;
            totalScale.ScaleY  = scaleLevel;
            totalScale.CenterX = scaleCenter.X;
            totalScale.CenterY = scaleCenter.Y;
            adjustGraph();
        }
Example #4
0
        void ThreadCanvas_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (e.Delta != 0)
            {
                double delta = e.Delta * ZoomSpeed;

                double ratio = e.GetPosition(this).X / AdornedElement.RenderSize.Width;

                double previousRange = Range;

                double scale = delta > 0.0 ? 1 / delta : -delta;

                Range    *= scale;
                Position += (previousRange - Range) * ratio;

                Refresh();
                UpdateBar();
            }
        }
Example #5
0
        public void MouseWheel(object sender, MouseWheelEventArgs e)
        {
            System.Windows.Point pos = e.GetPosition(_GLControl);

            double x = LookAt[0] + ((double)pos.X - _windowwidth / 2.0) / Ptodratio;
            double y = LookAt[1] + (_windowheight - (double)pos.Y - _windowheight / 2.0) / Ptodratio;

            if (e.Delta < 0)
            {
                Ptodratio *= 0.92;
            }
            else
            {
                Ptodratio /= 0.92;
            }

            LookAt[0] = x - ((double)pos.X - _windowwidth / 2.0) / Ptodratio;
            LookAt[1] = y - (_windowheight - (double)pos.Y - _windowheight / 2.0) / Ptodratio;
        }
Example #6
0
        private void MyGrid_OnMouseWheel(object sender, MouseWheelEventArgs e)
        {
            var position = e.GetPosition(TestGrid);

            Debug.WriteLine($"x:{position.X},Y:{position.Y}");

            var scale = 1 + e.Delta / (double)Math.Abs(e.Delta) * 0.1;

            var matrix  = TestGrid.RenderTransform.Value;
            var matrix2 = TestGrid2.RenderTransform.Value;

            //var position = e.GetPosition(TestGrid);
            matrix.ScaleAtPrepend(scale, scale, position.X, position.Y);
            TestGrid.RenderTransform = new MatrixTransform(matrix);
            var position2 = position * matrix2;

            matrix2.ScaleAt(scale, scale, position2.X, position2.Y);
            TestGrid2.RenderTransform = new MatrixTransform(matrix2);
        }
Example #7
0
        /// <summary> Event handler for scrolling the mouse wheel. Zooms in or out the map depending on the scroll
        /// direction of the mouse wheel. </summary>
        /// <param name="sender"> Sender of the MouseWheel event. </param>
        /// <param name="e"> Event parameters. </param>
        private void source_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            e.Handled = true;

            double oldZoom = mapView.FinalZoom;

            double delta = e.Delta * Map.MouseWheelSpeed / 120;

            if (Map.InvertMouseWheel)
            {
                delta = -delta;
            }

            double newZoom = oldZoom + delta;

            Point p = mapView.CanvasToPtvMercator(mapView.GeoCanvas, e.GetPosition(mapView.GeoCanvas));

            mapView.ZoomAround(p, newZoom, Map.UseAnimation);
        }
Example #8
0
        private void child_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (child != null)
            {
                var scaleTransform     = GetScaleTransform(child);
                var translateTransform = GetTranslateTransform(child);
                var rotateTransform    = GetRotateTransform(child);

                var zoom = e.Delta > 0 ? .2 : -.2;
                if (!(e.Delta > 0) && (scaleTransform.ScaleX < .4 || scaleTransform.ScaleY < .4))
                {
                    return;
                }

                var relative            = e.GetPosition(child);
                var transformedRelative = rotateTransform.Transform(scaleTransform.Transform(relative));

                var abosuluteX = transformedRelative.X + translateTransform.X;
                var abosuluteY = transformedRelative.Y + translateTransform.Y;

                scaleTransform.ScaleX += zoom;
                scaleTransform.ScaleY += zoom;

                transformedRelative  = rotateTransform.Transform(scaleTransform.Transform(relative));
                translateTransform.X = abosuluteX - transformedRelative.X;
                translateTransform.Y = abosuluteY - transformedRelative.Y;

                var group = new TransformGroup();
                if (scaleTransform.ScaleX < 1)
                {
                    group.Children.Add((Transform)scaleTransform.Inverse);
                }
                group.Children.Add((Transform)rotateTransform.Inverse);
                foreach (var markerControl in markerControls.Values.OfType <Button>())
                {
                    if (markerControl.Tag is PlayerMarker)
                    {
                        markerControl.RenderTransform = group;
                    }
                }
                selectedPositionControl.RenderTransform = group;
            }
        }
        private IInputElement GetOriginalSource(MouseWheelEventArgs e)
        {
            if (e.OriginalSource is ContentElement)
            {
                var ie = this.Element as IInputElement;
                var pt = e.GetPosition(ie);
                if (ie is Visual)
                {
                    var result = VisualTreeHelper.HitTest(ie as Visual, pt);
                    return(this.GetOriginalSource(result.VisualHit));
                }

                return(null);
            }
            else
            {
                return(this.GetOriginalSource(e.OriginalSource));
            }
        }
Example #10
0
        protected override void OnMouseWheel(MouseWheelEventArgs e)
        {
            base.OnMouseWheel(e);
            mouseDelta += e.Delta;
            Point mousePoint = e.GetPosition(this);

            if (mouseDelta >= 120)
            {
                mouseDelta %= 120;
                matrix.ScaleAt(1.1, 1.1, mousePoint.X, mousePoint.Y);
                InvalidateVisual();
            }
            else if (mouseDelta <= -120)
            {
                mouseDelta %= 120;
                matrix.ScaleAt(1 / 1.1, 1 / 1.1, mousePoint.X, mousePoint.Y);
                InvalidateVisual();
            }
        }
Example #11
0
        private void ImageScrollViewer_OnSetSize(ImageScrollViewer viewer, MouseWheelEventArgs e)
        {
            Point point = e.GetPosition(imgContainer);

            xScale = point.X / imgContainer.Width;
            yScale = point.Y / imgContainer.Height;

            if (e.Delta > 0 && (imgContainer.Width + SCROLL_SPEED <= MAX_WIDTH || imgContainer.Height + SCROLL_SPEED <= MAX_HEIGHT))
            {
                imgContainer.Width  += SCROLL_SPEED;
                imgContainer.Height += SCROLL_SPEED;
                isScroll             = true;
            }
            else if (e.Delta < 0 && (imgContainer.Width - SCROLL_SPEED >= MIN_WIDTH || imgContainer.Height - SCROLL_SPEED >= MIN_HEIGHT))
            {
                imgContainer.Width  -= SCROLL_SPEED;
                imgContainer.Height -= SCROLL_SPEED;
                isScroll             = true;
            }
        }
Example #12
0
        private void Image_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (e.Delta < 0 && scaleTf.ScaleX < 0.2)
            {
                return;
            }

            Point zoomCenter = e.GetPosition(AssociatedObject);
            Point point      = AssociatedObject.RenderTransform.Inverse.Transform(zoomCenter);


            this.translateTf.X = (zoomCenter.X - point.X) * this.scaleTf.ScaleX;
            this.translateTf.Y = (zoomCenter.Y - point.Y) * scaleTf.ScaleY;

            this.scaleTf.CenterX = zoomCenter.X;
            this.scaleTf.CenterY = zoomCenter.Y;

            this.scaleTf.ScaleX += e.Delta / 1000.0;
            this.scaleTf.ScaleY += e.Delta / 1000.0;
        }
Example #13
0
        //When mouse wheel is used on top of the canvas object...
        private void drawCanvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            //If not equal to MouseMode.Translate then exit from the method.
            if (MouseMode != MouseMode.Translate)
            {
                return;
            }

            _mousePos = e.GetPosition(DrawingCanvas);

            //If the change in mouse wheel position is greater than zero, then zoom in.
            if (e.Delta > 0)
            {
                Graph.Zoom(Rendering.ZoomMode.ZoomIn, _mousePos);
            }//If the change in mouse wheel position is less than zero, then zoom out.
            else if (e.Delta < 0)
            {
                Graph.Zoom(Rendering.ZoomMode.ZoomOut, _mousePos);
            }
        }
Example #14
0
        private void child_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (child != null && Move)
            {
                double zoom = e.Delta > 0 ? 0.2 : -0.2;
                if (!(e.Delta > 0) && (Zoom < 0.4))
                {
                    return;
                }

                Point  relative   = e.GetPosition(child);
                double abosuluteX = relative.X * Zoom + OffsetX;
                double abosuluteY = relative.Y * Zoom + OffsetY;

                Zoom += zoom;

                OffsetX = abosuluteX - relative.X * Zoom;
                OffsetY = abosuluteY - relative.Y * Zoom;
            }
        }
Example #15
0
        private void child_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (child != null)
            {
                //double zoom = e.Delta > 0 ? .1 : -.1;
                double             zoom          = e.Delta > 0 ? 1 : -1;
                Point              mousePosition = e.GetPosition(child);
                WorkspaceViewModel vm            = DataContext as WorkspaceViewModel;
                vm.OnRequestZoomToViewportPoint(this, new ZoomEventArgs(zoom, mousePosition));

                // Update WorkspaceModel without triggering property changed
                vm.SetCurrentOffsetCommand.Execute(GetTranslateTransformOrigin());

                // Reset Fit View Toggle
                if (vm.ResetFitViewToggleCommand.CanExecute(null))
                {
                    vm.ResetFitViewToggleCommand.Execute(null);
                }
            }
        }
 private void Border_MouseWheel(object sender, MouseWheelEventArgs e)
 {
     if (_initialize == false && _child != null)
     {
         var    st   = GetScaleTransform(_child);
         var    tt   = GetTranslateTransform(_child);
         double zoom = e.Delta > 0 ? .2 : -.2;
         if (!(e.Delta > 0) && (st.ScaleX < .4 || st.ScaleY < .4))
         {
             return;
         }
         Point  relative   = e.GetPosition(_child);
         double abosuluteX = relative.X * st.ScaleX + tt.X;
         double abosuluteY = relative.Y * st.ScaleY + tt.Y;
         st.ScaleX += zoom;
         st.ScaleY += zoom;
         tt.X       = abosuluteX - relative.X * st.ScaleX;
         tt.Y       = abosuluteY - relative.Y * st.ScaleY;
     }
 }
 protected void OnMouseWheel(object sender, MouseWheelEventArgs e)
 {
     if (trtcCloud != null && IsHaveStream && IsAllowControl)
     {
         var point = e.GetPosition(RenderMapView);
         var o     = new JObject();
         o["cmd"]     = "MouseWheel";
         o["Button"]  = 0;
         o["Clicks"]  = 0;
         o["X"]       = point.X;
         o["Y"]       = point.Y;
         o["Operate"] = (int)ENUM_MouseOperate.Wheel;;
         o["Delta"]   = e.Delta;
         var data = Encoding.UTF8.GetBytes(o.ToString());
         trtcCloud?.sendCustomCmdMsg(1, data, (uint)data.Length, true, true);
         e.Handled = true;
         return;
     }
     base.OnMouseWheel(e);
 }
Example #18
0
        protected virtual void HandleMouseWheel(object sender, MouseWheelEventArgs e)
        {
            var zoom = e.Delta > 0 ? .2 : -.2;

            if (!(e.Delta > 0) && (ScaleTransform.ScaleX < .4 || ScaleTransform.ScaleY < .4))
            {
                return;
            }

            foreach (Border child in Children)
            {
                child.UpdateLayout();

                var position = e.GetPosition(child);
                child.RenderTransformOrigin = new Point(position.X / child.ActualWidth, position.Y / child.ActualHeight);
            }

            ScaleTransform.ScaleX += zoom;
            ScaleTransform.ScaleY += zoom;
        }
        private void ControlOnMouseWheel(object sender, MouseWheelEventArgs e)
        {
            // When zooming, the point under the mouse should remain under the mouse after the zoom has happened
            var    mousePoint = e.GetPosition(this.ViewArea);
            double xGap       = (mousePoint.X - this.ShiftX) / this.Zoom;
            double yGap       = (mousePoint.Y - this.ShiftY) / this.Zoom;

            this.Zoom *= 1 + (e.Delta / 1200.0);
            if (this.Zoom < this._minZoom)
            {
                this.Zoom = this._minZoom;
            }
            if (this.Zoom > this._maxZoom)
            {
                this.Zoom = this._maxZoom;
            }

            this.ShiftX = this.ValidateXShift(-1 * (xGap * this.Zoom - mousePoint.X));
            this.ShiftY = this.ValidateYShift(-1 * (yGap * this.Zoom - mousePoint.Y));
        }
        public override void MouseWheelHandler(object sender, MouseWheelEventArgs e)
        {
            base.MouseWheelHandler(sender, e);

            Point basePoint = e.GetPosition(MainPage.Current);
            int   index     = FindScaleIndex(MainPage.Current.Scale);

            index += e.Delta / 120;
            if (index > _zoomLevels.Length - 1)
            {
                index = _zoomLevels.Length - 1;
            }
            else if (index < 0)
            {
                index = 0;
            }
            double scale = _zoomLevels[index];

            MainPage.Current.ScaleCanvas(scale, basePoint);
        }
Example #21
0
        private void onMouseWheel(object sender, MouseWheelEventArgs e)
        {
            Point scrollPos = e.GetPosition(this);

            this.dragStart = scrollPos;
            try {
                this.computing = true;

                double oldScale = this.Scale;
                this.Scale += oldScale * e.Delta / 1200.0;
                double delta = this.Scale - oldScale;
                Size   size  = this.DesiredSize;
                Size   crop  = this.RenderSize;
                this.ImageX += scrollPos.X * delta * size.Width / crop.Width;
                this.ImageY += scrollPos.Y * delta * size.Height / crop.Height;
            } finally {
                this.computing = false;
            }
            this.computeTransform();
        }
        private void AssociatedObject_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            if ((!ModifierKey.HasValue || !Keyboard.IsKeyDown(ModifierKey.Value)) && ModifierKey.HasValue)
            {
                return;
            }

            if (!(_transform is MatrixTransform transform))
            {
                return;
            }

            Point  pos1  = e.GetPosition(AssociatedObject);
            double scale = e.Delta > 0 ? 1.125 : 1 / 1.125;
            Matrix mat   = transform.Matrix;

            mat.ScaleAt(scale, scale, pos1.X, pos1.Y);
            transform.Matrix = mat;
            e.Handled        = true;
        }
        private void CustomControl1_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            Point scaleCenter = e.GetPosition(this);

            if (e.Delta > 0)
            {
                scaleLevel *= 1.08;
            }
            else
            {
                scaleLevel /= 1.08;
            }
            //Console.WriteLine("scaleLevel: {0}", scaleLevel);
            //Console.WriteLine("鼠标: {0},{1}", scaleCenter.X, scaleCenter.Y);

            totalScale.ScaleX  = scaleLevel;
            totalScale.ScaleY  = scaleLevel;
            totalScale.CenterX = scaleCenter.X;
            totalScale.CenterY = scaleCenter.Y;
        }
Example #24
0
        private void image_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            var mousePosition = e.GetPosition(snap);

            snap.RenderTransformOrigin = new Point(mousePosition.X / snap.ActualWidth, mousePosition.Y / snap.ActualHeight);

            var transformGroup = (TransformGroup)snap.RenderTransform;
            var transform      = (ScaleTransform)transformGroup.Children[0];


            double zoom = e.Delta > 0 ? .2 : -.2;

            if ((transform.ScaleX > 0.21 && zoom < 0) || (zoom > 0 && transform.ScaleX < 4))
            {
                transform.ScaleX += zoom;
                transform.ScaleY += zoom;
            }

            Console.WriteLine(transform.ScaleX);
        }
        /// <summary>
        /// Called when the mouse wheel is moved.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The <see cref="System.Windows.Input.MouseWheelEventArgs"/> instance containing the event data.
        /// </param>
        public void OnMouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (!this.IsZoomEnabled)
            {
                return;
            }
            if (this.ZoomAroundMouseDownPoint)
            {
                var point = e.GetPosition(Viewport);
                if (this.Viewport.FindNearest(point.ToVector2(), out Vector3 nearestPoint, out Vector3 normal, out var model))
                {
                    this.AddZoomForce(-e.Delta * 0.001f, nearestPoint);
                    e.Handled = true;
                    return;
                }
            }

            this.AddZoomForce(-e.Delta * 0.001f);
            e.Handled = true;
        }
Example #26
0
 protected override void OnMouseWheel(MouseWheelEventArgs e)
 {
     if (Keyboard.IsKeyDown(Key.LeftCtrl))
     {
         if (e.Delta <0 ? _zoom> 0.4 : _zoom < 2.5)
         {
             var p = e.GetPosition(this);
             _zoom += e.Delta / 3000.0;
             _translateTransform.X = p.X * (_zoomTransform.ScaleX - _zoom) + _translateTransform.X;
             _translateTransform.Y = p.Y * (_zoomTransform.ScaleY - _zoom) + _translateTransform.Y;
             _zoomTransform.ScaleY = _zoom;
             _zoomTransform.ScaleX = _zoom;
         }
         e.Handled = true;
     }
     else
     {
         base.OnMouseWheel(e);
     }
 }
Example #27
0
        protected override void OnMouseWheel(MouseWheelEventArgs e)
        {
            var x = Math.Pow(2, e.Delta / 3.0 / Mouse.MouseWheelDeltaForOneLine);

            MyCanvas.Scale *= x;
            foreach (var p in MyCanvas.Children)
            {
                if (p is System.Windows.Shapes.Path)
                {
                    System.Windows.Shapes.Path path = (System.Windows.Shapes.Path)p;
                    path.StrokeThickness /= x;
                }
            }
            var position = (Vector)e.GetPosition(Benchmark);

            MyCanvas.Offset = (System.Windows.Point)((Vector)
                                                     (MyCanvas.Offset + position) * x - position);

            e.Handled = true;
        }
        private void ZoomControl_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            double deltaZoom = GetZoomDelta(e.Delta);
            double width     = zoomControl.ActualWidth * deltaZoom;
            double height    = zoomControl.ActualHeight * deltaZoom;

            Point  cursorPosition      = e.GetPosition(zoomControl);
            double currentRelativeLeft = cursorPosition.X / zoomControl.ActualWidth;
            double currentRelativeTop  = cursorPosition.Y / zoomControl.ActualHeight;

            var topLeftCorner = new Point(
                cursorPosition.X - width * currentRelativeLeft,
                cursorPosition.Y - height * currentRelativeTop);

            var newSize = new Size(width, height);
            var zoomTo  = new Rect(topLeftCorner, newSize);

            zoomControl.ZoomTo(zoomTo);
            e.Handled = true;
        }
Example #29
0
        // <Snippet104>
        // Respond to the mouse wheel event by setting up a hit test filter and results enumeration.
        private void OnMouseWheel(object sender, MouseWheelEventArgs e)
        {
            // Retrieve the coordinate of the mouse position.
            Point pt = e.GetPosition((UIElement)sender);

            // Clear the contents of the list used for hit test results.
            hitResultsList.Clear();

            // Set up a callback to receive the hit test result enumeration.
            VisualTreeHelper.HitTest(myCanvas,
                                     new HitTestFilterCallback(MyHitTestFilter),
                                     new HitTestResultCallback(MyHitTestResult),
                                     new PointHitTestParameters(pt));

            // Perform actions on the hit test results list.
            if (hitResultsList.Count > 0)
            {
                ProcessHitTestResultsList();
            }
        }
Example #30
0
        private void OnMouseWheelChange(object sender, MouseWheelEventArgs e)
        {
            if (child == null)
            {
                return;
            }

            //get the Scale and Translate transform objects
            ScaleTransform     scaleTransform     = GetScaleTransform(child);
            TranslateTransform translateTransform = GetTranslateTransform(child);

            //create a zoom factor
            //a negative delta represents a zoom out
            double zoomFactor = e.Delta > 0 ? .2 : -.2;

            //if we're requesting to zoom out, but the value is already small, stop
            if ((e.Delta < 0) && (scaleTransform.ScaleX < .4 || scaleTransform.ScaleY < .4))
            {
                return;
            }

            //same for zooming in
            if ((e.Delta > 0) && (scaleTransform.ScaleX > 4 || scaleTransform.ScaleY > 4))
            {
                return;
            }

            Point relative = e.GetPosition(child);

            //zoom on the position of the mouse
            double abosuluteX = relative.X * scaleTransform.ScaleX + translateTransform.X;
            double abosuluteY = relative.Y * scaleTransform.ScaleY + translateTransform.Y;

            //apply the zoom scaling
            scaleTransform.ScaleX += zoomFactor;
            scaleTransform.ScaleY += zoomFactor;

            //zoom on the position of the mouse
            translateTransform.X = abosuluteX - relative.X * scaleTransform.ScaleX;
            translateTransform.Y = abosuluteY - relative.Y * scaleTransform.ScaleY;
        }
Example #31
0
File: Class1.cs Project: Pokat/Life
            static void w_MouseWheel(object sender, MouseWheelEventArgs e)
            {
                System.Windows.Media.Matrix m = i.RenderTransform.Value;

                if (e.Delta > 0)
                {
                    m.ScaleAt(
                        1.5,
                        1.5,
                        e.GetPosition(w).X,
                        e.GetPosition(w).Y);
                }
                else
                {
                    m.ScaleAt(
                        1.0 / 1.5,
                        1.0 / 1.5,
                        e.GetPosition(w).X,
                        e.GetPosition(w).Y);
                }

                i.RenderTransform = new MatrixTransform(m);
            }