My TChart
имеет много точек, добавленных методом series.AddXY
.Точка добавляется каждую секунду (но могут быть и длительные периоды без данных).После того, как диаграмма была изменена (точка добавлена), когда я перехожу на вкладку с диаграммой, она перерисовывается примерно через 5 секунд.
Я подумал, что использование функции агрегирования поможет нарисовать диаграммубыстрее:
ser1: TFastLineSeries;
ser2: TPointSeries;
ser3: TFastLineSeries;
utc: TDateTime;
ser1.SetFunction(TAverageTeeFunction.Create(Self));
ser1.FunctionType.Period := 100;
ser1.FunctionType.PeriodStyle := psRange;
ser2.SetFunction(TAverageTeeFunction.Create(Self));
ser2.FunctionType.Period := 100;
ser2.FunctionType.PeriodStyle := psRange;
ser3.SetFunction(TAverageTeeFunction.Create(Self));
ser3.FunctionType.Period := 100;
ser3.FunctionType.PeriodStyle := psRange;
for i := 0 to 30000 do begin
.....
ser1.AddXY(utc, 0, utcStr);
ser2.AddXY(utc, deviation, utcStr);
ser3.AddXY(utc, trend, utcStr);
.....
end;
но все так медленно, как было.
Как нарисовать график быстрее?
Обновление
Это не масштабируемый график за 3 часа данных.«Сейчас» находится на правом краю, «-3ч» слева.Очки постоянно поступают справа и удаляются слева.Рамка обзора смещается путем установки свойств chart.BottomAxis.Minimum
и chart.BottomAxis.Maximum
.Я был бы удовлетворен рисованием AVG, где количество средних значений - это горизонтальное количество пикселей на графике.