// 如果上一次的视图和当前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(); } }