コード例 #1
0
        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);
            }
        }
コード例 #2
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));
     }
 }
コード例 #3
0
        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));
        }