Hi Hoffi,
ich würde es folgendermaßen machen:
Und zwar gibst du an in welchen Schritten er die Werte berechnen soll (also bei s-t z.B. einen Definitionsbereich von 10 Sekunden und dann ein Intervall von einer Sekunde).
Und dann berechnest du die Werte für 0, 1, 2 ... 9, 10 Sekunden:
Entweder du speicherst das in einem dynamischen Array, oder du zeichntest du gleich ein.
Dabei ist es von Vorteil den obersten und untersten zu wissen.
Und dann kannst du diese Punkte miteinander verbinden.
Delphi-Quellcode:
Canvas.MoveTo(0, <Höhe für t = 0>);
for i := 1 to <Max> div <Interval> - 1 do
begin
Canvas.LineTo(i * <Breite>, <Höhe für t = i * Interval>);
end;
Ich hoffe damit kommst du zurecht
Max wäre 10 sein (s.o.) und Interval wäre 1.
Das "div" macht eine Integerdivision: Teilt also zwei Integer und schneidet den Rest ab (kann auch sein, dass er abrundet ^^):
3 div 2 = 1 oder
9 div 3 = 3
Und wir müssen ein Wert runtergehen, da wir - jedenfalls ist es so üblich beim Programmieren - bei 0 beginnen. Müssen also bei 10 Werten von 0. Wert bis zum (10 - 1).Wert gehen.
Die Breite ist der Abstand zwischen den Werten.
Wenn du 10 Werte darstellen willst und eine Breite für deinen Graph (ohne Achsen) von 100 hast, wäre die Breite maximal 10 (Also 10 Pixel abstand zwischen den Werten).
Und die Höhe kannst du einfach jedesmal berechnen.
Wobei du zu Anfang einmal die Höhe für t = Max - 1 berechnen würde, um den Graphen passend zu machen.
Ein Beispiel dazu: Wenn die Höhe für den Graphen 100 Pixel hoch ist, und der hächste Wert einen Wert von 200 hat, und der kleinste Wert von 0 hat, dann empfiehlt es sich, dass du die Höhe durch zwei teilst, damit die Werte zwischen 0 und 100 sind.
MfG
xZise