Hallo zusammen...
Ich habe vor einiger Zeit begonnen ein
GUI für einen LogikAnalysator zu programmieren...
Damals hat mir jemand hier aus diesem Forum sehr bei der umsetzung des Algorithmus zur Darstellung der Daten geholfen...
Nun ist einige Zeit vergangen, und ich möchte das
GUI gerne überarbeiten... Der Algorithmus zur Darstellung habe ich jetzt einfach mal 1:1 übernommen.
Doch leider habe ich festgestellt, das dieser zu wenig performant ist. Ich wollte euch deshalb fragen, ob ihr ideen zur beschleunigung dieses Algorithmus habt...
Fakten:
Das Signal wird auf ein TImage gezeichnet (mit PEN)
Es werden 8 Images (Kanäle) angezeigt
Die Daten für die Images liegen in einem Array
es muss entweder eine linie nach oben oder eine nach rechts gezeichnet werden.
Derzeitiger Zeichen algorithmus
Delphi-Quellcode:
procedure TForm1.draw_raw_data(drawspace:TImage;color:TColor; typ: integer);
const y: array[0..1] of integer = (25,6);
var
i:integer;
begin
i := 1;
draw_line(drawspace,color, 0, Kanal_Daten[typ][i].index,25);
draw_up(drawspace, color, Kanal_Daten[typ][i].index);
for i := 1 to (Kanal_Counter[typ])-1 do
begin
draw_up(drawspace, color, Kanal_Daten[typ][i+1].index);
draw_line(drawspace, color, Kanal_Daten[typ][i].index,Kanal_Daten[typ][i+1].index, y[Kanal_Daten[typ][i].data]);
end;
end;
Drawspace ist das TImage auf welches gezeichnet werden soll
Color ist die Farbe der Linie
und Typ ist ein Integer von 0..7. Mit diesem wird angegeben welche Kanaldaten verwendet werden müssen
Draw_line zeichner eine linie von x-x
Draw_up zeichnet eine Linie nach oben
Kanal_Daten[typ][i] ist ein Zweidimensionales Array... Wobei Typ für den Kanal steht und i ein wert von 0..65535 ist.
Dieser Algorithmus ist derzeit sehr träge...
Anbei habe ich das Programm mit einer Beispiel Datein (Einfach unter Allgemein -> Signal öffnen die Datei öffnen)
Danke schonmal
Grüsse