Ich weiß, wie man den Namen von vordefinierten Farben mit Hexadezimalwert erhält, aber wie man den Namen der Farbe erhält, während man seinen Hex-Wert der nächsten bekannten Farbe annähert.Den Namen der Farbe durch Hex-Wert erhalten?
7
A
Antwort
2
https://stackoverflow.com/a/7792104/224370 erläutert, wie eine benannte Farbe einem exakten RGB-Wert zugeordnet wird. Um es näher zu bringen, benötigen Sie eine Art Abstandsfunktion, bei der Sie berechnen, wie weit die Farben voneinander entfernt sind. Wenn Sie dies im RGB-Raum tun (Summe der Quadrate der Differenzen in den R-, G- und B-Werten), erhalten Sie keine perfekte Antwort (aber vielleicht gut genug). Ein Beispiel dafür finden Sie in https://stackoverflow.com/a/7792111/224370. Um eine genauere Antwort zu erhalten, müssen Sie möglicherweise zu HSL konvertieren und dann vergleichen.
5
Hier ist ein Code basierend auf Ians Vorschlag. Ich habe es auf eine Anzahl von Farbwerten getestet, scheint gut zu funktionieren.
GetApproximateColorName(ColorTranslator.FromHtml(source))
private static readonly IEnumerable<PropertyInfo> _colorProperties =
typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(p => p.PropertyType == typeof (Color));
static string GetApproximateColorName(Color color)
{
int minDistance = int.MaxValue;
string minColor = Color.Black.Name;
foreach (var colorProperty in _colorProperties)
{
var colorPropertyValue = (Color)colorProperty.GetValue(null, null);
if (colorPropertyValue.R == color.R
&& colorPropertyValue.G == color.G
&& colorPropertyValue.B == color.B)
{
return colorPropertyValue.Name;
}
int distance = Math.Abs(colorPropertyValue.R - color.R) +
Math.Abs(colorPropertyValue.G - color.G) +
Math.Abs(colorPropertyValue.B - color.B);
if (distance < minDistance)
{
minDistance = distance;
minColor = colorPropertyValue.Name;
}
}
return minColor;
}
Verwandte Themen
- 1. Spectrum Farbauswahl den Wert der Farbe erhalten
- 2. den Namen der Ausnahmeklasse in Python erhalten?
- 3. erhalten nur den Namen der ausgewählten Eingabedatei
- 4. So erhalten Sie den Domain-Namen in der REST-API
- 5. Erhalten Sie den vollständig qualifizierten Namen der Methode
- 6. iPhone SDK: Den Namen des Kontakts von der Telefonnummer erhalten
- 7. Schnellster Weg, um den Namen und das Symbol der Erweiterung durch eine Dateierweiterung zu erhalten?
- 8. Jhipster Auditing, falsch durch den Namen geändert
- 9. Den Namen eines verbundenen Bildschirms erhalten Swift
- 10. Den Namen einer Coffeescript-Klasse erhalten?
- 11. So erhalten Sie den Namen der aufrufenden Klasse (in PHP)
- 12. Wie kann ich den Namen der laufenden Java VM erhalten?
- 13. So erhalten Sie den Namen der Vollzeitzone ios
- 14. Wie kann ich den Namen der ausführenden .exe erhalten?
- 15. So erhalten Sie den Namen der Hintergrundfarbe einer Excel-Zelle (xlsx) mit POI
- 16. Farbe von CGContext erhalten?
- 17. Erhalten Dominanz Farbe opencv
- 18. Wie erhält man den aktuellen Namen einer Immobilie durch Reflektion?
- 19. Erhalten Sie Farbe aus der Distanz
- 20. Erhalten Namen der Liste in for-Schleife
- 21. Java-Wert der Eigenschaft durch Eigenschaftsnamen erhalten
- 22. Wie wird der Wert einer Objekteigenschaft durch den Namen der Eigenschaft in PowerShell abgerufen?
- 23. Erhalten Sie den Namen einer Klasse als Zeichenfolge in C#
- 24. Abrufen von Betreff-Namen basierend auf Farbe
- 25. Erste Klasse durch seinen Namen
- 26. Erhalten Namen Enum-Instanz
- 27. Den Namen der aktuellen Methode dynamisch abrufen
- 28. erhalten Kamel Namen aus Protokollpufferfeld
- 29. Ich muss den Namen eines Textdokuments durch ein cicle ändern
- 30. Aufruf einer Clojurescript-Funktion durch den String-Namen
Danke so muh Kartan ... :) – fresky