/// <summary> /// Converts HSL to .net Color. /// </summary> /// <param name="hsl">The HSL structure to convert.</param> public static Color HSLtoColor(HSL hsl) { return(HSLtoColor(hsl.Hue, hsl.Saturation, hsl.Luminance)); }
/// <summary> /// Converts HSL to RGB. /// </summary> /// <param name="hsl">The HSL structure to convert.</param> public static RGB HSLtoRGB(HSL hsl) { return(HSLtoRGB(hsl.Hue, hsl.Saturation, hsl.Luminance)); }
/// <summary> /// Converts HSL to RGB. /// </summary> /// <param name="hsl">The HSL structure to convert.</param> public static RGB HSLtoRGB(HSL hsl) { return HSLtoRGB(hsl.Hue, hsl.Saturation, hsl.Luminance); }
/// <summary> /// Converts HSL to .net Color. /// </summary> /// <param name="hsl">The HSL structure to convert.</param> public static Color HSLtoColor(HSL hsl) { return HSLtoColor(hsl.Hue, hsl.Saturation, hsl.Luminance); }
/// <summary> /// Gets the "distance" between two colors. /// </summary> /// EO Added 2011-09-08 /// <param name="color1">First color.</param> /// <param name="color2">Second color.</param> public static double GetColorDistance(HSL hsl1, HSL hsl2) { RGB rgb1 = HSLtoRGB(hsl1); RGB rgb2 = HSLtoRGB(hsl2); return GetColorDistance(rgb1.Red, rgb1.Green, rgb1.Blue, rgb2.Red, rgb1.Green, rgb1.Blue); }
// ****************************************************************** public Color GetNextColor() { while (true) { double hue = _random.NextDouble() * 360; double saturation; double luminance; // To go quicker and darker for white background // saturation = Math.Sqrt(_random.NextDouble()) ; // luminance = Math.Sqrt(_random.NextDouble()); // To go quicker and lighter for dark background //saturation = Math.Pow(_random.NextDouble(), 2.0); //luminance = Math.Pow(_random.NextDouble(), 2.0); // Less performance but higher compatibility saturation = _random.NextDouble(); luminance = _random.NextDouble(); HSL hsl = new HSL(hue, saturation, luminance); Color c = hsl.ToColor(); if (IsFarEnoughFromExistingColor(c, DistanceMin)) { UsedColors.Add(new ColorRatio(c)); DistanceMin += .02; _badTryCount = 0; return c; } _badTryCount++; if (_badTryCount > Accuracy) { _badTryCount = 0; DistanceMin -= .002; } } }