![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Снова График [D7, XP]
13 © (2006-05-17 17:54:00)Я уже задавал вопрос по построению графика в этом форуме так вот продолжение. Дело в том что мне нужно построить график по 32000 точек как сделать так чтобы по истечении какого то времени скажем 1сек график сдвигался. Скажем сначала показывал с первой точки до 100 потом с 100 до 200 и т.д. Подскажите может сталкивался кто
Kolan (2006-05-17 19:32:00) [21]Пример такой(я так и делаю в подобных ситуациях. Удобство в том, что способ отображения отделен от данных):
Пользую такую структуру для точки:
TDoublePoint = record
X: Double;
Y: Double;
end;
А график это:
TDoublePointArray = array of TDoublePoint;
Получив откудото данные в твоем случае, я думаю, это файл я сохраняю их в массивTDoublePointArray.
Вот пример для соседней ветки:
{Где-то заводим переменную для графика}
FArr: TDoublePointArray;
var
I, K: Integer;
Strings1, Strings2: TStringList;
X, Y: Double;
begin
Strings1 := TStringList.Create;
Strings2 := TStringList.Create;
try
Strings1.LoadFromFile('File1Name');
Strings2.LoadFromFile('File2Name');
SetLength(FArr, Strings1.Count);
K := 0;
for I := 0 to Strings1.Count - 1 do
begin
X := StrToFloat(Strings1[I]);
Y := StrToFloat(Strings2[I]);
FArr[K].X := X;
FArr[K].Y := Y;
end;
finally
Strings1.Free;
Strings2.Free;
end;
end;
А теперь если надо отобразить часть можно сделать так:
{...}
procedure ShowArr(LeftAge, RightAge: Integer; Arr: TDoublePointArray)
var
I: Integer;
begin
{Диапазон не забудь проверить.}
for I := LeftAge to RightAge do
Series1.AddXY(Arr[I].X, Arr[I].Y);
end;
Пользуем так:
ShowArr(100, 200, FArr);
Писал опять же прям сдесь...
13 (2006-05-17 18:36:00) [22]
> Kolan © (17.05.06 18:07) [3]
А можно пример. Очень нужно
Kolan (2006-05-17 18:07:00) [23]Ну е еще можно массивчик с графиком хранить в памяти, а раз в секунду выводить тот кусок, который нужен. Получится эффект движения. Моргать не будет проверял...
EvS (2006-05-17 18:00:00) [24]Один из способов постраничный вывод.
Установи свойство MaxPointsPerPage:= кол-во точек на страницу.
Затем листай страницы (Page,NumPages,PreviousPage, NextPage)
Ega23 (2006-05-17 17:59:00) [25]Минимум-максимум на оси менять по таймеру?