Компонент TChart может строить самые различные графики и диаграммы.
Рассмотрим задачу построения графика на примере синусоиды (y=sin(x)).
Данные для построения графика представляют собой набор точек (X,Y). Поэтому для того чтобы его сформировать необходимо вычислить значение функции для каждой точки того диапазона, в котором требуется построить график.
Местоположение промежуточных точек рассчитывается как положение предыдущей точки плюс некоторый интервал (шаг). Для первой промежуточной точки предыдущей точкой является граница диапазона.
Построим график синусоиды для диапазона от 0 до 2π.
Вначале создадим ряд данных компонента TChart, который, собственно, и будет отображать график, а также зададим нижнюю границу диапазона и шаг.
1 2 3 4 5 6 7 8 9 10 11 |
var Sinus: TLineSeries; h, x: real; begin Sinus := TLineSeries.Create(Chart1); Sinus.ParentChart := Chart1; Chart1.SeriesList.Add(Sinus); // Нижняя граница диапазона x := 0; // Шаг h := 0.05; |
Далее в цикле вычислим значения функции y=sin(x) для каждой точки графика и внесём результаты расчётов в ряд данных. Для вычисления значения функции используется встроенная функция Sin.
1 2 3 4 5 6 |
repeat // Вычисление значения y=sin(x) и добавление данных Chart1.SeriesList[0].AddXY(x, sin(x * Pi)); // Вычисление положения следующей точки x := x + h; until x > 2; |
Если всё вышесказанное реализовать, например, в виде обработчика события OnClick для кнопки, то получится следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
procedure TForm1.Button1Click(Sender: TObject); var Sinus: TLineSeries; h, x: real; begin Sinus := TLineSeries.Create(Chart1); Sinus.ParentChart := Chart1; Chart1.SeriesList.Add(Sinus); x := 0; h := 0.05; repeat Chart1.SeriesList[0].AddXY(x, sin(x * Pi)); x := x + h; until x > 2; end; |
После нажатия на кнопку будет построен «классический» график синусоиды.
Важно отметить, что если ряд данных был добавлен в Chart программно (как это было сделано в этой статье), то при закрытии формы необходимо очистить список рядов данных во избежание возникновения исключений.
1 2 3 4 |
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Chart1.SeriesList.Clear; end; |
Если ряд данных был создан в режиме визуального конструктора, эта операция не требуется.
Добавить комментарий