Hallo,
ich weiß nicht, ob ich hier in "Programmieren allgemein" richtig bin, aber ich beschreibe mal mein Problem.
Gegeben seien Messwerte (8 Stunden / 200 Hz / 12 Kanäle). Die Darstellung der Kanäle Erfolgt auf einer Paintbox. Abgesehen von der Skalierung der Wert in X- und Y-Richtung (bereits gelöst), bleibt das Problem, dass dieser Ansatz:
Delphi-Quellcode:
with PaintBox1.Canvas do begin
MoveTo(0, WertToY(Wert[0]));
for i := 0 to high(Wert) do
LineTo(IndexToX(i), WertToY(Wert[i]));
end;
zu lange dauert. Das Problem ist natürlich die sehr große Anzahl (~ 12 * 5,76 Mio) von LineTo's.
Folgendes habe ich bereits Probiert:
1. PolyLine von TCanvas
Nicht wirklich schneller als der Code oben. Eher langsamer
2. Nur alle n-ten Werte Zeichnen die auf eine X-Koordiante fallen
Problem: Die Anzahl zu verringen geht so in erster Näherung nicht, das in den Werten Peaks sein können (...0,0,3,205678.789,4,5,6,7....).
3. Das Min und Max aller Werte die auf eine X-Koordinate Fallen bestimmen und dann MoveTo(X,Min), LineTo(X,Max);
Problem: Das Suchen in den Werten braucht auch seine Zeit.
Nun die Frage, gibt es eine ganz anderen Ansatz eine solchen "Linienwald" mit höherer Performance zu zeichnen?
Vielen Dank für Eure mühe.
Mfg, Chris
P.S.: Sollte auch unter Win98 funktionieren