Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.12.06;
Скачать: CL | DM;

Вниз

Замена 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;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.008 c
15-1428065850
БарЛог
2015-04-03 15:57
2015.12.06
Электрика для дома. Так получилось.


15-1429029726
MBo
2015-04-14 19:42
2015.12.06
Прием видеопотока с @ в адресе


15-1429047002
Юрий
2015-04-15 00:30
2015.12.06
С днем рождения ! 15 апреля 2015 среда


15-1428874204
Юрий
2015-04-13 00:30
2015.12.06
С днем рождения ! 13 апреля 2015 понедельник


2-1403357120
cr@nk
2014-06-21 17:25
2015.12.06
Консольное приложение и количество строк на экране