Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Farbskala
tonka
myCSharp.de - Member

Avatar #avatar-2860.gif


Dabei seit:
Beiträge: 373
Herkunft: Österrreich

Themenstarter:

Farbskala

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
norman_timo
myCSharp.de - Member

Avatar #avatar-1775.jpeg


Dabei seit:
Beiträge: 4.506
Herkunft: Wald-Michelbach (Odw)

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von norman_timo am .
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
private Nachricht | Beiträge des Benutzers
nin
myCSharp.de - Member

Avatar #avatar-2166.gif


Dabei seit:
Beiträge: 738
Herkunft: graz,AT

beantworten | zitieren | melden

wenns hilft:
hier
private Nachricht | Beiträge des Benutzers
tonka
myCSharp.de - Member

Avatar #avatar-2860.gif


Dabei seit:
Beiträge: 373
Herkunft: Österrreich

Themenstarter:

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers