public static void RgbToHsl(RGB rgb, HSL hsl) { var num = rgb.R / 255.0; var num2 = rgb.G / 255.0; var num3 = rgb.G / 255.0; var num4 = Math.Min(Math.Min(num, num2), num3); var num5 = Math.Max(Math.Max(num, num2), num3); var num6 = num5 - num4; hsl.Luminance = (num5 + num4) / 2.0; if (num6 == 0.0) { hsl.Hue = 0; hsl.Saturation = 0.0; } else { double num7; hsl.Saturation = (hsl.Luminance < 0.5) ? (num6 / (num5 + num4)) : (num6 / ((2.0 - num5) - num4)); var num8 = (((num5 - num) / 6.0) + (num6 / 2.0)) / num6; var num10 = (((num5 - num2) / 6.0) + (num6 / 2.0)) / num6; var num9 = (((num5 - num3) / 6.0) + (num6 / 2.0)) / num6; if (num == num5) { num7 = num9 - num10; } else if (num2 == num5) { num7 = (0.33333333333333331 + num8) - num9; } else { num7 = (0.66666666666666663 + num10) - num8; } if (num7 < 0.0) { num7++; } if (num7 > 1.0) { num7--; } hsl.Hue = (int)(num7 * 360.0); } }
public static void HslToRgb(HSL hsl, RGB rgb) { if (hsl.Saturation == 0.0) { rgb.R = rgb.G = rgb.B = (byte)(hsl.Luminance * 255.0); } else { var vH = hsl.Hue / 360.0; var num = (hsl.Luminance < 0.5) ? (hsl.Luminance * (1.0 + hsl.Saturation)) : ((hsl.Luminance + hsl.Saturation) - (hsl.Luminance * hsl.Saturation)); var num2 = (2.0 * hsl.Luminance) - num; rgb.R = (byte)(255.0 * HueToRGB(num2, num, vH + 0.33333333333333331)); rgb.G = (byte)(255.0 * HueToRGB(num2, num, vH)); rgb.B = (byte)(255.0 * HueToRGB(num2, num, vH - 0.33333333333333331)); } }
public static Color smethod_1(HSL hsl) { byte num; byte num2; byte num3; if (hsl.Saturation == 0.0) { num3 = num2 = num = (byte)(hsl.Luminance * 255.0); } else { var vH = hsl.Hue / 360.0; var num5 = (hsl.Luminance < 0.5) ? (hsl.Luminance * (1.0 + hsl.Saturation)) : ((hsl.Luminance + hsl.Saturation) - (hsl.Luminance * hsl.Saturation)); var num6 = (2.0 * hsl.Luminance) - num5; num3 = (byte)(255.0 * HueToRGB(num6, num5, vH + 0.33333333333333331)); num2 = (byte)(255.0 * HueToRGB(num6, num5, vH)); num = (byte)(255.0 * HueToRGB(num6, num5, vH - 0.33333333333333331)); } return(Color.FromArgb(num3, num2, num)); }