/// <summary> /// Convert from HSL to RGB color space. /// /// </summary> /// <param name="hsl">Source color in <b>HSL</b> color space.</param><param name="rgb">Destination color in <b>RGB</b> color space.</param> public static void ToRGB(HSL hsl, RGB rgb) { if (hsl.Saturation == 0.0) { rgb.Red = rgb.Green = rgb.Blue = (byte)(hsl.Luminance * byte.MaxValue); } else { var vH = hsl.Hue; var v2 = hsl.Luminance < 0.5 ? hsl.Luminance * (1f + hsl.Saturation) : hsl.Luminance + hsl.Saturation - hsl.Luminance * hsl.Saturation; var v1 = 2f * hsl.Luminance - v2; rgb.Red = (byte)(byte.MaxValue * Hue2RGB(v1, v2, vH + 0.3333333f)); rgb.Green = (byte)(byte.MaxValue * Hue2RGB(v1, v2, vH)); rgb.Blue = (byte)(byte.MaxValue * Hue2RGB(v1, v2, vH - 0.3333333f)); } rgb.Alpha = byte.MaxValue; }
public HSLFilter(HSL minHSL, HSL maxHSL) { this.minHSL = minHSL; this.maxHSL = maxHSL; }