AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Werte farblich darstellen

Ein Thema von Luckie · begonnen am 9. Mai 2005 · letzter Beitrag vom 9. Mai 2005
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Werte farblich darstellen

  Alt 9. Mai 2005, 00:48
Ich habe Wert, sagen wir von 1 bis 200, diese möchte ich nun farblich darstellen, wie man es von Temperaturen kennt: niedrige Temperaturen blau über gelb, orange zu rot für warme Temperaturen.

Das:
Delphi-Quellcode:
    case cnt of
      0: StringGrid1.Canvas.Brush.Color := clWhite;
      1..10: StringGrid1.Canvas.Brush.Color := clNavy;
      11..20: StringGrid1.Canvas.Brush.Color := clBlue;
      21..30: StringGrid1.Canvas.Brush.Color := clGreen;
      31..40: StringGrid1.Canvas.Brush.Color := clLime;
      41..50: StringGrid1.Canvas.Brush.Color := clYellow;
      51..60: StringGrid1.Canvas.Brush.Color := cl
    else
      StringGrid1.Canvas.Brush.Color := clRed;
    end;
liefert nur sehr unbefridigende Resultatet. Hat jemand eine Funktion zu Hause rumliegen, die mir in Abhängigkeit des Wertes eine passenden Farbe liefert?

Danke schon mal für eure Mühe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 00:54
Hallo Luckie,

du koenntest einen Farbverlauf von gruen ueber blau zu gelb, dann orange und Rot machen, und diesen in 200 Stufen aufteilen. Dazu hatten wir erst letztens was (Hier im Forum suchenTGradient).
Anschliessend nimmst du einen der 200 Werte her. Mit etwas Planung laesst sich dies auch beliebig erweitern, so dass du nicht auf 200 Werte beschraenkt bist.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 01:02
TGradient ist nicht unbedingt das, was ich suche. Ich bräuchte mehr eine Formel die mir zu einem Wert zwischen 1 und 200 eine passenden Farbe liefert.

So was irgendwie:
StringGrid1.Canvas.Brush.Color := (10*cnt+10*cnt+10*cnt); Nur hier stimmt natürlich die Gewichtung der Frabanteile nicht. Nur leider habe ich von Farben und der Theorie dazu keine richtige Ahnung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 01:20
RGB ist ein additives Farbsystem.
Um nun eine Abstufung zu ermitteln Bildet man einfach nur den Zwischenwert mittels Verhältnisgleichung:
Delphi-Quellcode:
function GetMixColor(adwStartColor, adwStopColor : Cardinal; afPos : Extended) : Cardinal;
  function Clc(abStart, abStop : Byte) : Byte;
  begin
    Result := abStart + Round((abStop - abStart) * afPos);
  end;
begin
  Result := Rgb(Clc(GetRValue(adwStartColor), GetRValue(adwStopColor)),
                Clc(GetGValue(adwStartColor), GetGValue(adwStopColor)),
                Clc(GetBValue(adwStartColor), GetBValue(adwStopColor)));
end;
So könnte das zum Bsp aussehen.

btw.: Die Funktion selber ist etwas langsam und könnte etwas Tuning vertragen.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 01:25
Das Problem ist, ich habe keine Anfangs- und Endfarbe. Wenn ich 1 habe soll die Farbe tief blau, bei 75 grün, bei 150 gelb/orange und bei 200 dunkel rot sein. Und dazwischen eben schön mit den Zwischenstufen.

Kommando zurück, das ist natürlcih die Lösung ich Depp.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 01:33
Dazu musst du deine Bereich unterteilen.

Delphi-Quellcode:
1..75: Result := GetMixColor(Rgb(0, 0, 255), Rgb(0, 255, 0), (i - 1) / 75);
76..150: Result := GetMixColor(???, ???, (i - 76) / 75);
151..200: Result := GetMixColor(???, Rgb(255, 0, 0), (i - 151) / 50);[/delphi]

??? - leider weis ich die Farbwerte um diese Zeit nicht mehr.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Werte farblich darstellen

  Alt 9. Mai 2005, 01:46
Nein, muss ich nicht. Anfangswert ist 1 und Endwert ist 200 und fPos wäre bei mir cnt.

Allerdings bringt diese hier http://www.delphi-forum.de/viewtopic.php?p=221577 bessere Resultate wenn man con clYellow nach clGreen geht und für Anzahl 175 angibt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz