public void AdjustCurve(int position, NumericUpDownDirectionType direction) { // Configure const int changeFullSize = 47; // Spread of values affected const int changeSideSize = 23; // Number of values either side of centre const int changeMagnitude = 100; // The change in size of the peak/trough from the centre var lowerIndex = position - changeSideSize; // Lower index var higherIndex = position + changeSideSize; // Higher index // Calculate changes to apply to curve var curveValues = GenerateCurve(changeMagnitude, changeFullSize); // Apply change in curve to hidden series var hiddenSeries = _chart.Series.FindByName("Hidden"); for (var i = lowerIndex; i < higherIndex; i++) { if ((i >= 0) && (i < 120)) { switch (direction) { case NumericUpDownDirectionType.Up: hiddenSeries.Points[i].YValues[0] += curveValues[i - lowerIndex]; break; case NumericUpDownDirectionType.Down: hiddenSeries.Points[i].YValues[0] -= curveValues[i - lowerIndex]; break; } // Ensure value is kept within bounds hiddenSeries.Points[i].YValues[0] = CorrectValueIfOutsideBounds(hiddenSeries.Points[i].YValues[0]); } } GenerateProposedSeriesFromHiddenSeries(); }
public void PerformanceCurveChart_AdjustCurve(int position, NumericUpDownDirectionType direction) { _performanceCurveChart.AdjustCurve(position, direction); }