![]() |
Liniendiagramm mit verschiedenen Farben
Hallo zusammen!
Ich suche eine Komponente für Delphi 2006(2010), die Liniendiagramme kann, allerdings mit verschiedenen Farben für unterschiedliche Steigungen. Auch als Shareware, aber unbedingt mit dem Quellcode. Vielen Dank im voraus! |
Re: Liniendiagramm mit verschiedenen Farben
Wie komplex muss es denn sein? Vielleicht wäre es wert, das selbst zu schreiben -- auch wenn das nicht direkt die Antwort auf deine Frage ist. Ich hatte jedenfalls immer die Erfahrung gemacht, dass die Komponenten meist genau das nicht gemacht hatten, was ich wollte. Es waren halt immer so gewisse Details, die fehlten, um die Komponente in Meinen Augen vollständig wirken zu lassen.
|
Re: Liniendiagramm mit verschiedenen Farben
Ich würde es auch selbst programmieren. Liniendiagramme sind ja nicht sehr komplex und die Farbe an die Steigung anzupassen ist auch kein Problem.
Übrigens glaube nicht nicht, dass man für Shareware den Quellcode bekommt. |
Re: Liniendiagramm mit verschiedenen Farben
Liste der Anhänge anzeigen (Anzahl: 1)
Das angefügte Bild habe ich mit Canvas erstellt,
einfach mit MoveTo und LineTo. |
Re: Liniendiagramm mit verschiedenen Farben
Und was ist mit TChart, wenn Du da allerding den Sourcecode haben willst kostet es ordentlich
|
Re: Liniendiagramm mit verschiedenen Farben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ebenfalls mal ein Beispiel, gezeichnet auf Canvas, LineTo - MoveTo ... ist eigentlich einfach zu realisieren und bietet eben die Möglichkeit, Zeichenfläche und Graphen den eigenen Bedürfnissen anzupassen. |
Re: Liniendiagramm mit verschiedenen Farben
Zitat:
Beispiel: MoveTo 10 20 LineTo 30 40 Steigung = (40-20)/(30-10) (glaube ich) Um die Steigung in eine Farbe umzuwandeln, könnte man z.B. nur die Rot-Anteil den Farbe verändern. Rot := 0 bei maximaler negativer Steigung Rot := 255 bei maximaler positiver Steigung Edit: Und wenn man das alles hat, kann man es so zeichnen: MoveTo... steigung := ... SetColor(berechnefarbe(steigung)) LineTo... |
Re: Liniendiagramm mit verschiedenen Farben
Zitat:
|
Re: Liniendiagramm mit verschiedenen Farben
Zitat:
|
Re: Liniendiagramm mit verschiedenen Farben
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal einen Sinus programmiert, der je nach Steigung die Farbe ändert. So soll es sein, oder?
Ich kenne keine fertige Komponente, die die Farbe an die Steigung anpasst... |
Re: Liniendiagramm mit verschiedenen Farben
Zitat:
|
Re: Liniendiagramm mit verschiedenen Farben
Hallo,
... hab' auch mal 'nen bisschen rumprobiert :
Delphi-Quellcode:
Steigung gibt den Steigungswert (dezimal) zwischen zwei Punkten,
var
Steigung : real; Winkel : real; ... Steigung := (x1 - x0) / (y1 - y0); Winkel := RadToDeg(arctan2(y1-y0, x1-x0)); Winkel := (Trunc(Winkel * 10)) / 10; -beschrieben durch X0,Y0 und X1,Y1- aus, allerdings sind hier Werte von 0 ... unendlich möglich, so dass eine Farbzuweisung schwierig wird. Winkel gibt die Steigung in einem Bereich von -90,0 ... +90,0 grad zurück, wodurch die Farbzuweisung schon etwas "übersichtlicher" wird. Die Farben könnten z.B. in einem array gespeichert sein und über eine case-Anweisung zugewiesen werden. z.B.
Delphi-Quellcode:
alternativ kann natürlich auch entsprechend des Winkels
const
Colors : array[1..9] of TColor = (clBlue ..... ... case Winkel of 0..10 : pen.Color := Colors[1]; 11..20 : pen.Color := Colors[2]; ... end; ein Farbanteil (z.B. Rot) verändert werden. ... nur mal so als Denkanstoss |
Re: Liniendiagramm mit verschiedenen Farben
Zitat:
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz