private static void zoomByFactor(ActionContext <IMapView2D, Point2D> context, Double zoomFactor) { IMapView2D view = context.MapView; zoomFactor = 1 / zoomFactor; Size2D viewSize = view.ViewSize; Point2D viewCenter = new Point2D((viewSize.Width / 2), (viewSize.Height / 2)); Point2D viewDifference = context.CurrentPoint - viewCenter; Point2D zoomUpperLeft = new Point2D(viewDifference.X * zoomFactor, viewDifference.Y * zoomFactor); Size2D zoomBoundsSize = new Size2D(viewSize.Width * zoomFactor, viewSize.Height * zoomFactor); Rectangle2D zoomViewBounds = new Rectangle2D(zoomUpperLeft, zoomBoundsSize); view.ZoomToViewBounds(zoomViewBounds); }
private static void zoomByFactor(IMapView2D view, Point2D zoomCenter, Double zoomFactor) { zoomFactor = 1 / zoomFactor; Size2D viewSize = view.ViewSize; Point2D viewCenter = new Point2D((viewSize.Width / 2), (viewSize.Height / 2)); Point2D viewDifference = zoomCenter - viewCenter; Size2D zoomBoundsSize = new Size2D(viewSize.Width * zoomFactor, viewSize.Height * zoomFactor); Double widthDifference = zoomBoundsSize.Width - viewSize.Width; Double heightDifference = zoomBoundsSize.Height - viewSize.Height; Point2D zoomUpperLeft = new Point2D(viewDifference.X * zoomFactor - widthDifference / 2, viewDifference.Y * zoomFactor - heightDifference / 2); Rectangle2D zoomViewBounds = new Rectangle2D(zoomUpperLeft, zoomBoundsSize); view.ZoomToViewBounds(zoomViewBounds); }