Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1428960604
Юрий
2015-04-14 00:30
2015.12.06
С днем рождения ! 14 апреля 2015 вторник


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


2-1402812014
FIL-23
2014-06-15 10:00
2015.12.06
treeview как сделать Selected=nil если не выбран объект в дереве.


2-1401969140
Sakipiel
2014-06-05 15:52
2015.12.06
Как удалить динамически созданный контрол


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский