示例#1
0
        public static RgbColour GetRgbFromHls(HslColour colour)
        {
            double l = colour.L;
            double s = colour.S;
            double h = colour.H;

            double p2;

            if (l <= 0.5)
            {
                p2 = l * (1 + s);
            }
            else
            {
                p2 = l + s - l * s;
            }

            double p1 = 2 * l - p2;
            double doubleR, doubleG, doubleB;

            if (s == 0)
            {
                doubleR = l;
                doubleG = l;
                doubleB = l;
            }
            else
            {
                doubleR = QqhToRgb(p1, p2, h + 120);
                doubleG = QqhToRgb(p1, p2, h);
                doubleB = QqhToRgb(p1, p2, h - 120);
            }

            // Convert RGB to the 0 to 255 range.
            var r = (byte)(doubleR * 255.0);
            var g = (byte)(doubleG * 255.0);
            var b = (byte)(doubleB * 255.0);

            return(new RgbColour(r, g, b));
        }
示例#2
0
 public static HslColour AdjustLightness(HslColour c, double deltaL)
 {
     return(new HslColour(c.H, c.S, Math.Min(Math.Max(0.0d, c.L + deltaL), 1.0d)));
 }