I tried the following method and it still doesn't work. When zooming in is no longer possible, if the scroll wheel is still zoomed in, the ShapeNode still moves. I would like to ask how to prohibit this ShapeNode movement.
private void diagram_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { var imageBounds = imageNode.Bounds; var zoomRect = diagram.Viewport; var zoomStep = 10;
if (e.Delta < 0) { zoomRect = new Rect ( Math.Max(imageBounds.X, zoomRect.X - zoomStep / 2), Math.Max(imageBounds.Y, zoomRect.Y - zoomStep / 2), Math.Min(imageBounds.Width, zoomRect.Width + zoomStep), Math.Min(imageBounds.Height, zoomRect.Height + zoomStep) ); } else { zoomRect = new Rect ( Math.Min(overlayNode.Bounds.X, zoomRect.X + zoomStep / 2), Math.Min(overlayNode.Bounds.Y, zoomRect.Y + zoomStep / 2), Math.Max(10, zoomRect.Width - zoomStep), Math.Max(10, zoomRect.Height - zoomStep) ); }
if (!zoomRect.Contains(diagram.Factory.CreateShapeNode(overlayNode.Bounds.X, overlayNode.Bounds.Y, 10, 10).Bounds)) { diagram.ZoomToRect(zoomRect, true); }
// stop the scrollviewer from scrolling e.Handled = true; }
|