Форум: "Начинающим";
Текущий архив: 2015.12.06;
Скачать: [xml.tar.bz2];
ВнизЗамена Chart - графика для слабых компьютеров? Найти похожие ветки
← →
Jeer © (2014-06-18 14:32) [40]Динамический N-мерный массив всегда можно логически представить одномерным.
Исходи из этого.
← →
Германн © (2014-06-18 14:48) [41]
> Jeer © (18.06.14 14:32) [40]
> Динамический N-мерный массив всегда можно логически представить
> одномерным.
> Исходи из этого.
Только не динамический. Двумерный динмассив N*M размещен в N разных областях памяти размером M.
← →
Inovet © (2014-06-18 14:56) [42]> [41] Германн © (18.06.14 14:48)
Значит делаем одномерный и работаем с ним как с н-мерным.
← →
Германн © (2014-06-18 14:58) [43]
> Inovet © (18.06.14 14:56) [42]
А это уже не ко мне. :)
← →
Who_are_you? © (2014-06-18 16:15) [44]Одномерный динамический тоже просто через File_rd не заполнишь.
Если кто-нибудь предложит примеры текста программ, был бы весьма рад !!!
← →
Германн © (2014-06-18 16:24) [45]
> Who_are_you? © (18.06.14 16:15) [44]
> Одномерный динамический тоже просто через File_rd не заполнишь.
>
Это если не умеешь :)Fail_rd :array of byte;
...
SetLength(Fail_rd, 800);
Resul:=ReadFile(hInFile,Fail_rd[0],N_strok_File,Bytes,nil);
← →
reonid © (2014-06-18 18:23) [46]В принципе, у меня есть библиотечка, которая на хорошем
компе нормально отображает несколько сигналов по миллиону точек
и при этом не слишком тормозит при паннинге.
Может, она и потянет (я не знаю, до какой степени
у тебя тормознутый комп)
Но она для внутреннего употребления,
поэтому нет никакой документации.
Если хочешь, пришлю.
← →
й (2014-06-18 20:35) [47]reonid, не эта:
http://kladovka.net.ru/index.cgi?pid=viewprofile&rid=318
? или сильно обновленная версия?
← →
Who_are_you? © (2014-06-18 20:39) [48]
Может, она и потянет (я не знаю, до какой степени
у тебя тормознутый комп)
Что за комп, я написал в начале.В принципе, у меня есть библиотечка, которая на хорошем
компе нормально отображает несколько сигналов по миллиону точек
и при этом не слишком тормозит при паннинге.
Но она для внутреннего употребления,
поэтому нет никакой документации.
Если хочешь, пришлю.
Я бы посмотрел, что от меня требуется?
Здесь E-mail можно выкладывать?
← →
Who_are_you? © (2014-06-18 20:42) [49]reonid?
Ссылка выше - это она?
← →
reonid © (2014-06-18 22:00) [50]Ссылка - это очень старая версия библиотеки,
точнее, её базовая часть.
Класса TRSeries, который я использую быстрой отрисовки, там нет.
Я послал на мэйл на list.ru, который у тебя под ником.
← →
Who_are_you? © (2014-06-19 10:19) [51]
reonid © (18.06.14 22:00) [50]
Я послал на мэйл на list.ru, который у тебя под ником.
Спасибо, получил, разбираюсь.
← →
Who_are_you? © (2014-06-20 14:50) [52]
reonid © (18.06.14 22:00) [50]
Ваш fastChart на один график работает.
А на 2-ва, тем более на 4-е графика у меня не получилось.
← →
reonid © (2014-06-20 16:00) [53]>Ваш fastChart на один график работает.
В смысле не тормозит? или просто удалось запустить?
>А на 2-ва, тем более на 4-е графика у меня не получилось.
Нужны 4 чарта или 4 серии на одном чарте?
← →
Who_are_you? © (2014-06-20 16:13) [54]
Германн © (18.06.14 16:24) [45]
Спасибо Вам за помощь.
Сейчас делаю так:File_rd :array of byte; //дин. матрица
...
Resul:=ReadFile(hInFile,File_rd[0],N_strok_File*8,Bytes,nil);
далее делаю математ. вычисления, запоминаю в:
BitMap1.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin1*m1));
BitMap2.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin2*m2));
BitMap3.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin3*m3));
BitMap4.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin4*m4));
и обработав 32кб строк, отображаю
Canvas.draw(8,42,BitMap1); //отрисовываем сам bitmap1
Canvas.draw(8,43+BitMap2.Height,BitMap2); //отрисовываем сам bitmap2
Canvas.draw(8,44+2*BitMap3.Height,BitMap3); //отрисовываем сам bitmap3
Canvas.draw(8,45+3*BitMap4.Height,BitMap4); //отрисовываем сам bitmap4
Если в начале темы я писал, что
> Ждать приходится около 3 минут.
,
то сейчас чтение файла, математ. вычисления, отображение проходит за 5 секунд.
Если кто может предложить еще как повысить быстродействие - буду рад.
Для примера: оболочка Делфи 7 появляется на экране через ~1.5 минуты после нажатия Enter.
← →
Who_are_you? © (2014-06-20 16:50) [55]
reonid © (20.06.14 16:00) [53]
>Ваш fastChart на один график работает.
В смысле не тормозит? или просто удалось запустить?
>А на 2-ва, тем более на 4-е графика у меня не получилось.
Нужны 4 чарта или 4 серии на одном чарте?
Подробности такие:
вывод графика идет с тормозами,
сдвиг графика на нормальном компе - это доли секунды, а на указанном в начале темы - около 12 секунд.
Нужны 4 чарта.
← →
reonid © (2014-06-20 17:06) [56]>вывод графика идет с тормозами
а ты число точек варьировал? - у меня в примере 100000 стояло.
>Нужны 4 чарта.
Это примерно так:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls,
DoubleFn, DoubleOp, StdAlgs,
RTypes, RCore, RSeries, RZoom, RTool, _newArea,
PlotCol;
type
TForm1 = class(TForm)
Panel1: TPanel;
Timer1: TTimer;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
FArea1: TRNewWorkArea;
FArea2: TRNewWorkArea;
FArea3: TRNewWorkArea;
FArea4: TRNewWorkArea;
FSeries1: TRSeries;
FSeries2: TRSeries;
FSeries3: TRSeries;
FSeries4: TRSeries;
FPhaseShift: Double;
procedure FillAllSeries;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure FillSeries(Ser: TRSeries; N: Integer; Phase: Double);
var i: Integer;
begin
Ser.Resize(N);
for i := 0 to Ser.Length-1 do
begin
Ser.X[i] := i;
Ser.Y[i] := Sin(i*0.05 + Phase);
end;
//ForEach(Ser.GetArrayAdapter("y"), TUnaryOp.AddGaussianNoise(0.1));
end;
procedure TForm1.FillAllSeries;
begin
FillSeries(FSeries1, 1000, FPhaseShift);
FillSeries(FSeries2, 1000, FPhaseShift+1);
FillSeries(FSeries3, 1000, FPhaseShift+2);
FillSeries(FSeries4, 1000, FPhaseShift+3);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FArea1 := TRNewWorkArea.CreateEx(Self, Panel1, alClient);
FArea1.SetGlobalTool(ZoomTool);
//FArea1.SetGlobalTool(EditTool);
FArea2 := TRNewWorkArea.CreateEx(Self, Panel2, alClient);
FArea3 := TRNewWorkArea.CreateEx(Self, Panel3, alClient);
FArea4 := TRNewWorkArea.CreateEx(Self, Panel4, alClient);
FSeries1 := TRSeries.CreateEx(FArea1.Layer.Root, "", clBlack);
FSeries2 := TRSeries.CreateEx(FArea2.Layer.Root, "", clRed);
FSeries3 := TRSeries.CreateEx(FArea3.Layer.Root, "", clBlue);
FSeries4 := TRSeries.CreateEx(FArea4.Layer.Root, "", clGreen);
//FSeries1.FastMode := True; for more than 10000 points
FillAllSeries;
FArea1.ZoomOut;
FArea2.ZoomOut;
FArea3.ZoomOut;
FArea4.ZoomOut;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
FillAllSeries;
FPhaseShift := FPhaseShift + 0.3;
//FArea1.ZoomOut;
FArea1.Refresh;
FArea2.Refresh;
FArea3.Refresh;
FArea4.Refresh;
end;
end.
← →
Who_are_you? © (2014-06-21 12:30) [57]Who_are_you? © (20.06.14 16:13) [54]
Германн © (18.06.14 16:24) [45]
Спасибо Вам за помощь.
Сейчас делаю так:
File_rd :array of byte; //дин. матрица
...
Resul:=ReadFile(hInFile,File_rd[0],N_strok_File*8,Bytes,nil);
далее делаю математ. вычисления, запоминаю в:
BitMap1.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin1*m1));
BitMap2.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin2*m2));
BitMap3.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin3*m3));
BitMap4.Canvas.LineTo(x0+Round(Time_Visibl*mx),y0-Round(Uin4*m4));
и обработав 32кб строк, отображаю
Canvas.draw(8,42,BitMap1); //отрисовываем сам bitmap1
Canvas.draw(8,43+BitMap2.Height,BitMap2); //отрисовываем сам bitmap2
Canvas.draw(8,44+2*BitMap3.Height,BitMap3); //отрисовываем сам bitmap3
Canvas.draw(8,45+3*BitMap4.Height,BitMap4); //отрисовываем сам bitmap4
Если в начале темы я писал, что
> Ждать приходится около 3 минут.
,
то сейчас чтение файла, математ. вычисления, отображение проходит за 5 секунд.
Если кто может предложить еще как повысить быстродействие - буду рад.
Для примера: оболочка Делфи 7 появляется на экране через ~3 минуты после нажатия Enter. (Уточненные данные)
← →
Германн © (2014-06-22 02:54) [58]
> Германн © (18.06.14 16:24) [45]
> Спасибо Вам за помощь.
Да не за что.
Если понадобится объяснить почему именно так нужно передавать параметр, тут найдутся люди, которые объяснят гораздо лучше чем я. Почти "в стихах". :)
Разве что будет неопределенность с терминами.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2015.12.06;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.003 c