// This sets the view to be centered at x,y /*private void ScrollTo(float x, float y) * { * // Scroll now * renderer2d.PositionView(x, y); * this.OnViewChanged(); * * // Redraw * General.MainWindow.RedrawDisplay(); * * // Determine new unprojected mouse coordinates * mousemappos = renderer2d.DisplayToMap(mousepos); * General.MainWindow.UpdateCoordinates(mousemappos); * }*/ // This zooms private void ZoomBy(float deltaz) { Vector2D zoompos; // This will be the new zoom scale float newscale = renderer2d.Scale * deltaz; // Limit scale if (newscale > SCALE_MAX) { newscale = SCALE_MAX; } if (newscale < SCALE_MIN) { newscale = SCALE_MIN; } // Get the dimensions of the display Vector2D clientsize = new Vector2D(General.Map.Graphics.RenderTarget.ClientSize.Width, General.Map.Graphics.RenderTarget.ClientSize.Height); // When mouse is inside display if (mouseinside) { // Zoom into or from mouse position zoompos = (mousepos / clientsize) - new Vector2D(0.5f, 0.5f); } else { // Zoom into or from center zoompos = new Vector2D(0f, 0f); } // Calculate view position difference Vector2D diff = ((clientsize / newscale) - (clientsize / renderer2d.Scale)) * zoompos; Vector2D offset = ClampViewOffset(renderer2d.OffsetX - diff.x, renderer2d.OffsetY + diff.y); //mxd // Zoom now renderer2d.PositionView(offset.x, offset.y); renderer2d.ScaleView(newscale); this.OnViewChanged(); //mxd. Change grid size? MatchGridSizeToDisplayScale(); // Redraw General.MainWindow.RedrawDisplay(); // Give a new mousemove event to update coordinates if (mouseinside) { OnMouseMove(new MouseEventArgs(mousebuttons, 0, (int)mousepos.x, (int)mousepos.y, 0)); } }