Wykres w Visual c++

0

Witam. pisze oprogramowanie do wyświetlania danych na wykresie. Dane pobieram z pliku binarnego a nastepnie wyświetlam je na wykresie. wszystko działa tylko że danych jest bardzo dużo i samo wyświetlanie trwa troche czasu. Czy istnieje jakaś metoda aby ten czas jakoś skrócić?

0

Zbyt ogólnie przedstawione pytanie by dało się cokolwiek odpowiedzieć.

1

albo wyswietlac mniej danych (przed wyswietlaniem). Pogrupowac, usunac jakies ktore sa nadmiarowe

0

w petlach for wybieram odpowiednie dane z pliku binarnego następnie przeliczam i probuje wyswietlic na wykresie. jest ok 900k probek do wyswietlenia. zajmuje to jednak toche czasu i tutaj jest moje pytanie czy mozna to jakos przyspieszyc

`` for (int i = dl_paczki_poczatkowej*dl_paczki; i < dl_pliku_bajt; i += dl_paczki){
for (int k = i + dl_licznika_paczki; k < i + dl_paczki; k += dl_ramki){
for (int j = k, l = 0 ; j < k + dl_ramki, l < dl_ramki; j++, l++){
ramka[l] = bufor[j];
}
bufor_kanal1[n] = ((400 * (Convert::ToSingle(ramka[4] & 0x03FF) - 512)) / 1024);
bufor_kanal2[n] = ((2 * (Convert::ToSingle(ramka[5] & 0x03FF) - 512)) / 1024);
bufor_kanal3[n] = ((2 * (Convert::ToSingle(ramka[6] & 0x03FF) - 512)) / 1024);
bufor_kanal4[n] = ((10 * (Convert::ToSingle(ramka[7] & 0x03FF) - 512)) / 1024);
bufor_czas[n] = Convert::ToSingle((ramka[1] * 65536 + ramka[0]) & 0x003FFFFF) / 10000;

					 this->chart1->Series["wykres"]->Points->AddXY(bufor_czas[n], bufor_kanal1[n]);
					 this->chart1->Series["wykres1"]->Points->AddXY(bufor_czas[n],bufor_kanal2[n]);
					
					 n++;
					
					 
				 }
				
			 }``
0

w petlach for wybieram odpowiednie dane z pliku binarnego następnie przeliczam i probuje wyswietlic na wykresie. jest ok 900k probek do wyswietlenia. zajmuje to jednak toche czasu i tutaj jest moje pytanie czy mozna to jakos przyspieszyc

 for (int i = dl_paczki_poczatkowej*dl_paczki; i < dl_pliku_bajt; i += dl_paczki){
					 for (int k = i + dl_licznika_paczki; k < i + dl_paczki; k += dl_ramki){
						 for (int j = k, l = 0 ; j < k + dl_ramki, l < dl_ramki; j++, l++){
							 ramka[l] = bufor[j];							 
						 }
						 bufor_kanal1[n] = ((400 * (Convert::ToSingle(ramka[4] & 0x03FF) - 512)) / 1024);
						 bufor_kanal2[n] = ((2 * (Convert::ToSingle(ramka[5] & 0x03FF) - 512)) / 1024);
						 bufor_kanal3[n] = ((2 * (Convert::ToSingle(ramka[6] & 0x03FF) - 512)) / 1024);
						 bufor_kanal4[n] = ((10 * (Convert::ToSingle(ramka[7] & 0x03FF) - 512)) / 1024);
						 bufor_czas[n] = Convert::ToSingle((ramka[1] * 65536 + ramka[0]) & 0x003FFFFF) / 10000;
										 
						 this->chart1->Series["wykres"]->Points->AddXY(bufor_czas[n], bufor_kanal1[n]);
						 this->chart1->Series["wykres1"]->Points->AddXY(bufor_czas[n],bufor_kanal2[n]);
						
						 n++;
						
						 
					 }
					
				 }
0

zrobilem takie cos w liceum :) w delphi 3

0

przy 900k probkach to nic dziwnego ze Ci wolno dziala

sprobuj
FastLine albo FastPoint.
Tez mozesz sprobowac usunac tooltip
https://social.msdn.microsoft.com/Forums/en-US/906e0778-4cc4-4460-8079-f43c428c729a/ecg-chart-performance-problem?forum=MSWinWebChart
(szkoda ze nie napisales co to za framework i jakiego typu jest ten chart)

0

Wlasnie mam wybrany fastline. A plik binarny jest zapisany ramkami udp. Ja po prostu z odpowiednich pól wybieram probki czasu i napiecia

0

Chyba bez decymacji lub obcięcia pliku się nie obejdzie. A mam jeszcze jedno pytanie... korzystam z komputera z zintegrowaną kartą graficzna, i jak wrzucam dane na wykres to w menedżerze zadań widać jak rośnie rozmiar pamięci zajmowanej przez program. Czy jak wrzucę aplikacje na komputer z dedykowaną kartą graficzną to aplikacja rozdzieli dane na pamięć karty graficznej ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1