コード例 #1
0
        // 如果上一次的视图和当前XY轴范围不匹配则取消缩放视图
        private void CancelScaleViewIfRangeNotFit(double lastMaxX, double lastMinX, double lastMaxY, double lastMinY)
        {
            if (!AxisX.IsZoomed && !AxisY.IsZoomed)
            {
                return;
            }

            double currentMaxX = AxisX.Maximum;
            double currentMinX = AxisX.Minimum;
            double currentMaxY = AxisY.Maximum;
            double currentMinY = AxisY.Minimum;

            //            double viewMaxX = plotArea.AxisX.ViewMaximum;
            //            double viewMinX = plotArea.AxisX.ViewMinimum;
            //            double viewMaxY = plotArea.AxisY.ViewMaximum;
            //            double viewMinY = plotArea.AxisY.ViewMinimum;
            // 如果没有重合区域则取消缩放
            if (double.IsNaN(lastMaxX) || double.IsNaN(lastMinX) || double.IsNaN(lastMaxY) || double.IsNaN(lastMinY) ||
                double.IsNaN(currentMaxX) || double.IsNaN(currentMinX) || double.IsNaN(currentMaxY) || double.IsNaN(currentMinY) ||
                currentMaxX <= lastMinX || currentMinX >= lastMaxX || currentMaxY <= lastMinY || currentMinY >= lastMaxY)
            {
                AxisX.CancelScaleView();
                AxisX2.CancelScaleView();
                AxisY.CancelScaleView();
                AxisY2.CancelScaleView();
            }
            double currentXRange = currentMaxX - currentMinX;
            double currentYRange = currentMaxY - currentMinY;
            double lastXRange    = lastMaxX - lastMinX;
            double lastYRange    = lastMaxY - lastMinY;
            double minXRange     = currentXRange > lastXRange ? lastXRange : currentXRange;
            double minYRange     = currentYRange > lastYRange ? lastYRange : currentYRange;

            // 如果X轴范围差比例超过最大维持系数则取消XY轴的缩放
            if (Math.Abs(currentXRange - lastXRange) / minXRange > Constants.MaxDiffToKeepXScaleview)
            {
                AxisX.CancelScaleView();
                AxisX2.CancelScaleView();
                AxisY.CancelScaleView();
                AxisY2.CancelScaleView();
            }
            // 如果Y轴范围差比例超过最大维持系数则取消Y轴的缩放
            else if (Math.Abs(currentYRange - lastYRange) / minYRange > Constants.MaxDiffToKeepYScaleview)
            {
                AxisY.CancelScaleView();
                AxisY2.CancelScaleView();
            }
        }