Пример #1
0
        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);
        }
Пример #2
0
        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);
        }