private void DoZoom(double factor, Point?mousePos = null) { if (masterPlot != null) { var rect = masterPlot.PlotRect; ValidateNavigationLimits(); rect = NavigationHelper.DoZoom(factor, mousePos, rect, NavigationLimitMaxX, NavigationLimitMinX, NavigationLimitMaxY, NavigationLimitMinY, IsHorizontalNavigationEnabled, IsVerticalNavigationEnabled, PreferredAspectRatio, masterPlot.AspectRatio); if (IsZoomEnable(rect)) { masterPlot.SetPlotRect(rect); masterPlot.IsAutoFitEnabled = false; } } }
private void DoZoom(double factor) { if (masterPlot != null) { var rect = masterPlot.PlotRect; if (IsHorizontalNavigationEnabled) { rect.X = rect.X.Zoom(factor); } if (IsVerticalNavigationEnabled) { rect.Y = rect.Y.Zoom(factor); } if (IsZoomEnable(rect)) { masterPlot.SetPlotRect(rect); masterPlot.IsAutoFitEnabled = false; } } }
private void KeyboardNavigationKeyDown(object sender, KeyEventArgs e) { if (masterPlot != null) { if (e.Key == Key.Up && IsVerticalNavigationEnabled) { var rect = masterPlot.PlotRect; double dy = rect.Height / 200; masterPlot.SetPlotRect(new DataRect( rect.XMin, rect.YMin - dy, rect.XMin + rect.Width, rect.YMin - dy + rect.Height)); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Down && IsVerticalNavigationEnabled) { var rect = masterPlot.PlotRect; double dy = -rect.Height / 200; masterPlot.SetPlotRect(new DataRect( rect.XMin, rect.YMin - dy, rect.XMin + rect.Width, rect.YMin - dy + rect.Height)); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Right && IsHorizontalNavigationEnabled) { var rect = masterPlot.PlotRect; double dx = -rect.Width / 200; masterPlot.SetPlotRect(new DataRect( rect.XMin + dx, rect.YMin, rect.XMin + dx + rect.Width, rect.YMin + rect.Height)); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Left && IsHorizontalNavigationEnabled) { var rect = masterPlot.PlotRect; double dx = rect.Width / 200; masterPlot.SetPlotRect(new DataRect( rect.XMin + dx, rect.YMin, rect.XMin + dx + rect.Width, rect.YMin + rect.Height)); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Subtract) { DoZoom(1.2); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Add) { DoZoom(1 / 1.2); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Home) { masterPlot.IsAutoFitEnabled = true; e.Handled = true; } } }
private void KeyboardNavigationKeyDown(object sender, KeyEventArgs e) { if (masterPlot != null) { if (e.Key == Key.Up && IsVerticalNavigationEnabled) { var rect = masterPlot.PlotRect; ValidateNavigationLimits(); bool returnToAvailableArea = NeedReturnToAvailableArea( ref rect, NavigationLimitMaxX, NavigationLimitMinX, NavigationLimitMaxY, NavigationLimitMinY); if (returnToAvailableArea) { masterPlot.SetPlotRect(rect); } else { double dy = rect.Height / 200; var newRect = new DataRect( rect.XMin, rect.YMin - dy, rect.XMin + rect.Width, rect.YMin - dy + rect.Height); if (NavigationYIsInBounds(newRect, NavigationLimitMaxY, NavigationLimitMinY)) { masterPlot.SetPlotRect(newRect); } } masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Down && IsVerticalNavigationEnabled) { var rect = masterPlot.PlotRect; ValidateNavigationLimits(); bool returnToAvailableArea = NeedReturnToAvailableArea( ref rect, NavigationLimitMaxX, NavigationLimitMinX, NavigationLimitMaxY, NavigationLimitMinY); if (returnToAvailableArea) { masterPlot.SetPlotRect(rect); } else { double dy = -rect.Height / 200; var newRect = new DataRect( rect.XMin, rect.YMin - dy, rect.XMin + rect.Width, rect.YMin - dy + rect.Height); if (NavigationYIsInBounds(newRect, NavigationLimitMaxY, NavigationLimitMinY)) { masterPlot.SetPlotRect(newRect); } } masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Right && IsHorizontalNavigationEnabled) { var rect = masterPlot.PlotRect; ValidateNavigationLimits(); bool returnToAvailableArea = NeedReturnToAvailableArea( ref rect, NavigationLimitMaxX, NavigationLimitMinX, NavigationLimitMaxY, NavigationLimitMinY); if (returnToAvailableArea) { masterPlot.SetPlotRect(rect); } else { double dx = -rect.Width / 200; var newRect = new DataRect( rect.XMin + dx, rect.YMin, rect.XMin + dx + rect.Width, rect.YMin + rect.Height); if (NavigationXIsInBounds(newRect, NavigationLimitMaxX, NavigationLimitMinX)) { masterPlot.SetPlotRect(newRect); } } masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Left && IsHorizontalNavigationEnabled) { var rect = masterPlot.PlotRect; ValidateNavigationLimits(); bool returnToAvailableArea = NeedReturnToAvailableArea( ref rect, NavigationLimitMaxX, NavigationLimitMinX, NavigationLimitMaxY, NavigationLimitMinY); if (returnToAvailableArea) { masterPlot.SetPlotRect(rect); } else { double dx = rect.Width / 200; var newRect = new DataRect( rect.XMin + dx, rect.YMin, rect.XMin + dx + rect.Width, rect.YMin + rect.Height); if (NavigationXIsInBounds(newRect, NavigationLimitMaxX, NavigationLimitMinX)) { masterPlot.SetPlotRect(newRect); } } masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Subtract) { DoZoom(1.2); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Add) { DoZoom(1 / 1.2); masterPlot.IsAutoFitEnabled = false; e.Handled = true; } if (e.Key == Key.Home) { masterPlot.IsAutoFitEnabled = true; e.Handled = true; } } }