示例#1
0
        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;
                }
            }
        }
示例#2
0
        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;
                }
            }
        }
示例#4
0
        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;
                }
            }
        }