Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

PHP_Error

unregistriert

1

10.08.2012, 17:09

C# - HTML Farben -> Farbton ändern

Moin!
Jeder kennt in Programmen zum Generieren von HTML Farben dieses "Farbton ändern".
Auf dieser Seite kann man den Farbton neben dem Rechteck mit einem Schieberegler ändern.
Bei Paint.Net kann man den Farbton mithilfe von positiven und negativen Zahlen ändern.

Nun zu meiner Frage:
Wie kann ich so etwas selbst realisieren?
Ich möchte z.B. die Farbe grün (#99FF33) in blau (#305CEF) ändern können. Allerdings nur die Farbe.

Ich hoffe ihr konntest verstehen was ich möchte und mir helfen.

Gruß Hauke

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

10.08.2012, 17:20

Das sind keine HTML Farben. Das ist einfach eine Hexadezimale Darstellung von Farben. Dabei sind jeweils zwei Zeichen für einen Farbanteil. Wenn du sowas angehst, musst du den Farbverlauf erzeugen und danach in dieses Format kodieren.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

10.08.2012, 17:31

Ich bin jetzt nicht ganz sicher, was du willst. Es gibt einen ColorPicker in DotNet, den du nutzen kannst, heißt glaube ich ColorDialog. Weil der nicht besonders toll ist, findest du im Internet aber auch ne ganze Menge anderer, google einfach nach "C# Color Picker" und du wirst schnell fündig :) Hab mir vor einiger Zeit auch mal selbst einen geschrieben, den findest du (mit Quellcode und Screenshot) hier.


Solltest du stattdessen gar nicht das Steuerelement sondern die eigentliche "Farbwandlung" meinen: Am besten du konvertierst deine RGB-Farbe in den HSV-Farbraum, änderst den H-Wert (steht für "Hue" bzw. "Farbton") und konvertierst das anschließend wieder zurück. Wenn du System.Drawing.Color verwendest: Die Klasse sollte bereits selbst Methoden haben um Hue, Saturation und Value einer Rgb-Farbe zu errechnen. Du holst dir also alle drei Werte, veränderst H deinen wünschen entsprechend und errechnest aus den neuen Werten dann wieder eine Rgb-Farbe. Dafür hat System.Drawing.Color leider keine Methoden, aber hier findest du eine Beispiel-Implementierung davon, wie man das selbst macht.

Falls du zusätzlich noch eine Hex-Konvertierung durchführen willst, da könnten dir diese beiden Seiten weiterhelfen :)

PHP_Error

unregistriert

4

10.08.2012, 17:34

Danke für die Antwort.
Wie kann ich den passenden Verlauf denn erzeugen?
Es müssen ja passend die Werte für R, G und B von 0 bis 255 eingesetzt werden.
Natürlich könnte ich nun mit Schleifen die Werte erhöhen und senken, allerdings bringt mir das komplett andere Farben - nicht einen anderen Farbton.

Edit:
Vielen Dank Fetze! Genau das meinte ich :)
Ich werde mich ein bisschen einlesen und mir die Links angucken.

LInsoDeTeh

Treue Seele

Beiträge: 372

Wohnort: Essen, Deutschland

Beruf: Team Lead Inhouse-Entwicklung

  • Private Nachricht senden

5

19.08.2012, 22:55

Eine andere Möglichkeit wäre vielleicht, einen Farbverlauf via PictureBox einzubinden und dann mit GetPixel zu arbeiten. Dann musst du den Farbverlauf nicht selbst generieren.

Werbeanzeige