Einzelnen Beitrag anzeigen

Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#13

Re: Liniendiagramm mit verschiedenen Farben

  Alt 5. Jan 2010, 18:25
Zitat von egal:
ja, so soll's sein, Kurven können aber verschieden sein. Für einen Tipp, wie du das gemacht hast, wäre ich dankbar.
Das funktioniert auch mit allen anderen Kurven, solange man die Steigung berechnen kann. Und wenn man sie zeichnen kann, kann man auch die Steigung berechnen.
Habe es nicht in Delphi gemacht, sondern in Java, deshalb die Funktionsweise erklärt:

Naiv gesehen würde man einen Graphen so zeichnen, dass man einfach für jedes X ein Y berechnet und den Pixel X,Y auf eine bestimmte Farbe setzt. Besser ist es, wenn man die Koordinaten berechnet und sie dann mit den Koordinaten des vorherigen Punktes verbindet (Linie). Das heißt, man hat die Koordinaten vom aktuellen Punkt und die vom letzten Punkt. Aus zwei Punkten kann man ganz einfach die Steigung dazwischen berechnen (siehe unten). Aus dieser Steigung macht man dann noch eine Farbe und verbindet die zwei Punkte mit einer farbigen Linie.

Pseudocode:
Delphi-Quellcode:
      while ...
begin // jedes Teilstück des Graphen zeichnen
         lastX := nextX;
         lastY := nextY;
         
         nextX := neue X-Koordinate berechnen;
         nextY := neue Y-Koordinate berechnen;
         
         steigung := (nextY - lastY)/(nextX - lastX);
         color := 255/MAXIMALE_STEIGUNG * abs(steigung); // auf Datentypen und Rundungen achten
         if steigung >= 0 then
            setColor(Color(col, 0, 0));
         else
            setColor(Color(0, 0, col));
         
         drawLine((lastX, lastY, nextX, nextY );
      end;
  Mit Zitat antworten Zitat