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); }
/// <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(); }
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(); } }
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; }
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); }
/// <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); }
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)); } }
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(); } }
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; } }
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; }
//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); } }
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; } }
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); }
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); }
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; }
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; }
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); } }
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; }
// <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(); } }
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; }
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); }