/// <summary> /// Retrieve or create a name for the specified color. /// </summary> /// <param name="color">Color that may or may not have a associated name.</param> /// <returns>The color's name or a name created based upon the ARGB values.</returns> public static string GetName(this Color color) { if (color.IsEmpty) { return("Empty"); } if (color.A == 0) { return(Color.Transparent.Name); } if (color.IsNamedColor) { return(color.Name); } var result = KnownColors.FirstOrDefault(c => c.R == color.R && c.G == color.G && c.B == color.B); return(!result.IsEmpty ? (color.A != 255 ? $"({color.A},{result.Name})" : result.Name) : (color.A != 255 ? $"({color.A},{color.R},{color.G},{color.B})" : $"({color.R},{color.G},{color.B})")); }