Wie kann ich eine C# -Farbe aus HSL-Werten erstellen?Erstellen einer C# -Farbe aus HSL-Werten
Antwort
Rich Newman hat eine HSLColor-Klasse erstellt, die anstelle von System.Drawing.Color verwendet werden kann.
Diese Klasse scheint zu arbeiten * die meiste Zeit *. Ich habe ein Problem, bei dem ich eine HSL-Farbe (210,45,72) habe, was ein Blau ist, das als rgb (90,62,83) ausgegeben wird, was ein Rot ist. Ich versuche auf seinen Blog zu kommen, aber es lädt fast nie lol. – Sinaesthetic
Diese Klasse verwendet die Color.GetBrightness-Methode, sodass der Farbraum [HSB] (http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC36) und nicht HSL dargestellt wird. – ironic
Dont funktioniert nicht für # bbe30a und # 320ae3. Ich habe nur zwei Werte ausprobiert und aufgegeben. – aloisdg
Fügen Sie folgende Zeile unten an der Namespaces in Ihrem Code-Datei "mit":
using System.Runtime.InteropServices
und mit P/Invoke, fügen Sie die folgende Funktion:
[DllImport("shlwapi.dll")]
public static extern int ColorHLSToRGB(int H, int L, int S);
In jeder beliebigen Klasse in Ihrem Projekt.
Wenn Sie die Farbe in Farbton, Luminanz und Sättigung als Ganzzahlen haben, dann geben Sie diese Werte an diese Funktion, und die gewünschte RGB-Farbe wird als Ganzzahl zurückgegeben. Verwenden Sie dann ColorTranslator.FromWin32, um die zurückgegebene RGB-Farbe als Ganzzahl in die System.Drawing.Color-Struktur zu übersetzen.
Ein anderer Weg ist Color.FromArgb (Int32) Überlast-Methode zu verwenden, die Farbe, die Sie als System.Drawing.Color Struktur aus dieser ganzen Zahl erstellen möchten.
Ein anderer Weg ist eine Instanz ColorConverter Klasse zu erstellen und dann ConvertFrom Methode aufrufen, und geben die RGB-Farb ganze Zahl aus dem ColorHLSToRGB Funktion zurückgegeben, oder ConvertTo Methode mit dem gleichen ersten nennen Argument, aber in der zweiten Argumenteingabe typeof(System.Drawing.Color)
. Konvertieren Sie dann das zurückgegebene Objekt in System.Drawing.Color-Strukturtyp.
Das Ergebnis ist genau das, was Sie suchen und erwarten!
Sie können auch versuchen, andere Algorithmen oder Möglichkeiten, die Sie suchen, finden und lernen im Internet, wie RGB-Farbe als Ganzzahl in System.Drawing.Color Struktur konvertieren oder wie HLS-Werte als drei ganze Zahlen zu konvertieren System.Drawing.Color Struktur!
Ein paar Dinge zu beachten: 'H', 'L' und' S' gehen von 0 bis 240. Denken Sie daran, dass eine Luminanz von 0 Schwarz bedeutet, und 240 bedeutet Weiß, wenn Sie also eine reine Farbe wünschen '# F00') müssen Sie' L' auf 120 setzen. Auch erwähnenswert: Wenn Sie die 'Color.FromArgb (Int32)' Überladung verwenden, wird die Farbe ein Alpha von 0 haben, was bedeutet, dass Ich werde transparent sein. 'ColorTranslator.FromWin32()' hat dieses Problem nicht. – Nolonar
- 1. So erstellen Sie eine Bitmap aus einer RGB-Farbe
- 2. Erstellen einer Verzeichniszeichenfolge aus Komponententeilen in C#
- 3. Fading Farbe in einer Schleife mit C#
- 4. Erstellen einer JVM aus einer JNI-Methode
- 5. C# -Wrapper automatisch aus c-Headern erstellen?
- 6. C++ Win32 Konsole Farbe
- 7. Erstellen Sie eine Liste von Wörtern aus einer Datei C++
- 8. Erstellen eines Arrays aus einer CSV-Datei mit Objective C
- 9. C++ 11 Erstellen statisches Array aus einer Parameterpaket
- 10. Einfachste Möglichkeit, eine Zeichenfläche aus einer C++ - DLL zu erstellen?
- 11. Klasse dynamisch in C# aus einer Liste von Zeichenfolgen erstellen
- 12. Erstellen einer Python C++ Erweiterung
- 13. Die Farbe einer Datenreihe aus einem Flotendiagramm erhalten
- 14. Erstellen einer Tabelle aus Daten
- 15. Komponente aus einer Zeichenfolge erstellen
- 16. Objektname aus einer Zeichenfolge erstellen
- 17. Erstellen einer Adjazenzliste aus Datei
- 18. Erstellen einer lokalen Datenbank aus einer Skriptdatei?
- 19. Erstellen Sie eine "Paarung" aus einer Grafik?
- 20. Erstellen von Komplementär-, Dreifach- und einfarbigen Farbpaletten aus einer einzelnen Hex-Farbe
- 21. Erstellen einer DataTable aus einer CSV-Datei
- 22. Erstellen einer langen Zeichenfolge aus einer Ergebnismenge
- 23. Erstellen einer Tabelle aus einer Datei
- 24. Erstellen einer DenseMatrix aus einer Transponierung
- 25. Erstellen einer BulletCollisionShape aus einer .egg-Datei
- 26. Erstellen einer Zeichenfolge aus einer Liste
- 27. Erstellen einer Bestenliste aus einer mySQL-Tabelle
- 28. Erstellen einer SQL Server-Datenbank aus Python
- 29. Validierung einer Farbe in Silverlight
- 30. erstellen Json Blöcke aus einer Textdatei
Siehe auch: http://stackoverflow.com/questions/2942/hsl-in-net/2504318#2504318 –