![]() |
Diagramm erstellen, Linienfarbe soll sich ändern
Hi, ich habe ein Problem mit der Darstellung eines Liniendiagramms (So Zick-Zack mäßig). zeichne das Diagramm aus Messwerten die ich vorher in einem Array abgelegt habe. Beim Diagramm habe ich eine X- u. Y-Achse. Ich habe 10 Messwerte auf der X- Achse und eine Einteilung in 100er Schritten auf der Y-Achse. Sobald die Linie den 100er Bereich überschritten hat soll die Linie von dieser Stelle an zb. orange gezeichnet werden, ab 200 grün usw. Wie mache ich das mit dem Farbwechsel am einfachsten? Dankeschön schon mal
![]() ![]() |
Re: Diagramm erstellen, Linienfarbe soll sich ändern
Wie zeichnest Du denn? Mit Canvas.MoveTo und Canvas.LineTo? Dann einfach Canvas.Pen.Color entsprechend setzen.
|
Re: Diagramm erstellen, Linienfarbe soll sich ändern
@Deddy: Und was ist, wenn die Linie von lineTo nicht direkt an der Grenze endet/anfängt. Dann müsste man nämlich die Linie teilen. Und ich denke, darauf bezog sich die Frage :wink:
btw: ![]() |
Re: Diagramm erstellen, Linienfarbe soll sich ändern
Ist doch auch nicht weiter schwer: wenn ich eine "Grenze" auf der X-Achse habe, kann ich vor dem Zeichnen kontrollieren, ob diese beim Zeichnen überschritten wird (X-Koordinate beim LineTo). Wenn das so ist, zeichne ich halt in 2 Schritten mit entsprechender Farbänderung dazwischen.
[edit] Das einzig Schwierige ist dabei, den entsprechenden Punkt an der Grenze zu ermitteln (bei einer schrägen Linie). Das kann man aber mit dem Satz des Pythagoras gut hinbekommen.[/edit] |
Re: Diagramm erstellen, Linienfarbe soll sich ändern
Ja mit LineTo. Das Problem ist nur das ich an den Schnittpunkten (sobsld ich zb 100 überschreite) ja dann innerhalb einer Linie die Farbe wechseln muß. Und dafür muß ich dann wahrscheinlich das Zeichnen der Linie unterbrechen, die Farbe wechseln und bis zum Messwert weiter zeichnen, oder? Hatte halt gehofft es ging irgendwie einfacher, hab nämlich 5 Farbänderungen und 10 Messreihen (also 10 Diagramme mit je 10 Werten die etwas versetzt dargestellt werden) Bin noch en ziemliche Anfänger bei Delphi un kenn die Möglichkeiten noch net so. Danke
|
Re: Diagramm erstellen, Linienfarbe soll sich ändern
Das ist doch reine Mathematik. Du hast doch den Punkt p1 unter 100 und den Punkt p2 der über 100 liegt. Somit kannst du mit den 2 Punkten (da es eine lineare Funktion dazwischen ist) den Anstieg berechnen. Mit diesem kannst du dann den passenden X Wert zu dem Punkt auf der 100-Linie berechnen. Voila - bis dahin schwarz malen (p1 bis Punkt auf 100-Linie) und dann Stiftfarbe wechseln und dann von dem Punkt weiter zu p2.
|
Re: Diagramm erstellen, Linienfarbe soll sich ändern
So bevor das hier auch noch gesperrt wird weil ichs nicht selber verlinkt habe
![]() ![]() Danke für eure Hilfe und sorry, wußte nicht das man das mit dem verlinken macht. |
Re: Diagramm erstellen, Linienfarbe soll sich ändern
Hallo,
das müsste auch mit einer Verhältnisgleichung gehen:
Delphi-Quellcode:
const
Wert1: TPoint = (X: 40; Y: 130); Wert2: TPoint = (X: 90; Y: 90); var P100: TPoint; begin canvas.MoveTo(0, 100); canvas.LineTo(self.Width, 100);//Kontrollstrich bei 100 zum Überprüfen P100.Y:= 100; P100.X:= Wert1.X+ Round((100- Wert1.Y) * (Wert2.X- Wert1.X) / (Wert2.Y- Wert1.Y)); canvas.MoveTo(Wert1.X, Wert1.Y); canvas.LineTo(P100.X, P100.Y); canvas.Pen.Color:= clRed; canvas.MoveTo(P100.X, P100.Y); canvas.LineTo(Wert2.X, Wert2.Y); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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