I don't agree with your premise that the current ScrollFrame auto-scaling mode is useless. My long experience shows that the way it is implemented is what most programmers want.
You can implement what you describe easily enough. Turn off the auto-y scaling of the scroll frame.
scrollFrame.ScrollScaleModeY = ChartObj.NO_AUTOSCALE;
Then keep track of the maximum y-value you want the y-scale to auto-scale against, probably in the routine you use to update the RTProcessVar objects.
private void timer1_Tick(object sender, System.EventArgs e)
{
if (this.IsDesignMode) return;
// Random data
currentTemperatureValue1 += 5 * (0.5 - ChartSupport.GetRandomDouble());
// maxy is a double global to the entire class
maxy = Math.Max(currentTemperatureValue1, maxy);
// This method uses the default time stamp, which is the current time-of-day
currentTemperature1.SetCurrentValue(currentTemperatureValue1);
}
Then, if the ymax value changes, adjust the y-scale and axes each time you do an update.
private void timer2_Tick(object sender, System.EventArgs e)
{
if (this.IsDesignMode) return;
this.UpdateDraw();
if (scrollFrame.ChartObjScale.ScaleStopY != maxy)
{
scrollFrame.ChartObjScale.ScaleStopY = maxy;
scrollFrame.RescaleAxesToCurrentTransform();
}
}
You can make it fancier by tracking more variables, but the concept is the same.