private void DoPan(Point screenStart, Point screenEnd) { if (masterPlot != null) { double dx = IsHorizontalNavigationEnabled ? masterPlot.XFromLeft(screenEnd.X) - masterPlot.XFromLeft(screenStart.X) : 0; double dy = IsVerticalNavigationEnabled ? masterPlot.YFromTop(screenEnd.Y) - masterPlot.YFromTop(screenStart.Y) : 0; var rect = masterPlot.PlotRect; double width = rect.Width; double height = rect.Height; if (IsDirectionInverted) { dy = -dy; } masterPlot.SetPlotRect(new DataRect( rect.XMin - dx, rect.YMin - dy, rect.XMin - dx + width, rect.YMin - dy + height)); masterPlot.IsAutoFitEnabled = false; } }
private void MouseNavigationLayer_MouseWheel(object sender, MouseWheelEventArgs e) { Point cursorPosition = e.GetPosition(this); if (!CheckCursor(cursorPosition)) { return; } //Zoom relative to mouse position double factor = e.Delta < 0 ? 1.2 : 1 / 1.2; Point mousePos = new Point( masterPlot.XFromLeft(cursorPosition.X), masterPlot.YFromTop(cursorPosition.Y)); DoZoom(factor, mousePos); e.Handled = true; }