Laden...

Farbskala

Erstellt von tonka vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.807 Views
tonka Themenstarter:in
373 Beiträge seit 2006
vor 17 Jahren
Farbskala

Hy @ all

Hab eine Farborientierte Frage. ich muss eine Farbskala darstellen, diese soll von blau nach rot gehen. Außerdem bekomme ich von einem Wertefeld das MIN und MAX aller Werte in diesem Feld. Nach diesen zwei Werten richtet sich die Darstellung -> der MIN-Wert soll Blau und der MAX-Wert Rot sein. Alle Werte dazwischen sollen eine linieare Stufung bekommen, d.h. irgend eine Farbe zwischen Blau und Rot.

So soll die Syntax aussehen:

private Color GetColor(double min,double max, double aktuellerWert)

Sitzt schon eine ganze weile an diesem Problem und langsam blick ich gar nicht mehr durch.

MfG
Tonka

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo tonka,

das sollte doch relativ trivial sein, wenn ich mich nicht irre.

Rot ist in RGB -> 255, 0, 0
Blau ist in RGB -> 0, 0, 255

Die Mitte ist dann ein Mischmasch aus beiden Farben, z.B. Rotblau -> 127, 0, 127

Dann hast Du ein Minimum und ein Maximum (Deine Double-Werte). Davon bildest Du nun die Differenz (Abstufung). Jetzt kannst Du hergehen die 255 möglichen Werte durch die "Abstufung" teilen und erhälst dann die einzelnen Stufenwerte.

Diese musst Du nun darstellen.

Am einfachsten wäre es wenn Du genausoviele Bereiche zeichnen könntest, ansonsten musst Du alle Werte die Du darstellen möchtest wieder umskalieren, dass sie auf Deine Pixelbreite passen.

Ich hoffe ich habe mich verständlich ausgedrückt??

Gruß
Norman-Timo

Edit: Sinnvolle Ergänzung zum Verständnis

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

738 Beiträge seit 2007
vor 17 Jahren

wenns hilft:
hier

tonka Themenstarter:in
373 Beiträge seit 2006
vor 17 Jahren

Hy

Also die theorie war mir schon klar, mein Problem ist eher die umsetzung im Code.
Im Anhang habe ich ein Bild angehängt wie die Skala aussehen muss.

MfG

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo tonka,

reche die RGB-Werte in HSL-Werte um, erhöhe den H-Wert und wandele wieder zurück. Siehe auch http://de.wikipedia.org/wiki/HSL-Farbraum

herbivore

B
1.529 Beiträge seit 2006
vor 17 Jahren

Zur Darstellung einfach LinearGradientBrush.

Ansonsten gibt es verschieden Möglichkeiten einen solchen Farbverlauf darzustellen.
Du könntest im dreidimensionalen linearen RGB-Farbraum einfach die Gerade zwischen den beiden Farben linear darstellen, so wie norman_timo es vorgeschlagen hat. Anstelle einer Gerade sind aber auch noch viele andere Funktionen denkbar. Du könntest auch den Farbraum logarithmisch darstellen.

Du kannst natürlich auch in einen anderen Farbraum umrechnen. Gerade der von herbivore angesprochene HSL Farbraum ermöglicht es, den Farbverlauf in einer für Menschen sehr harmonisch wirkenden Weise zu berechnen.
Allerdings gibt es auch hier wieder mehrere Möglichkeiten von einem Punkt des Farbraums zu einem anderen zu kommen.