Пример #1
0
        public HSV ToHSV()
        {
            HSV hs = new HSV();
            RGB rg = new RGB(this.R, this.G, this.B);

            var m = rg.R;

            if (rg.G < m)
            {
                m = rg.G;
            }
            if (rg.B < m)
            {
                m = rg.B;
            }
            var v = rg.R;

            if (rg.G > v)
            {
                v = rg.G;
            }
            if (rg.B > v)
            {
                v = rg.B;
            }
            var value = 100 * v / 255;
            var delta = v - m;

            if (v == 0.0)
            {
                hs.S = 0;
            }
            else
            {
                hs.S = 100 * delta / v;
            }

            if (hs.S == 0)
            {
                hs.H = 0;
            }
            else
            {
                if (rg.R == v)
                {
                    hs.H = 60.0 * (rg.G - rg.B) / delta;
                }
                else if (rg.G == v)
                {
                    hs.H = 120.0 + 60.0 * (rg.B - rg.R) / delta;
                }
                else if (rg.B == v)
                {
                    hs.H = 240.0 + 60.0 * (rg.R - rg.G) / delta;
                }
                if (hs.H < 0.0)
                {
                    hs.H = hs.H + 360.0;
                }
            }

            hs.H = Math.Round(hs.H);
            hs.S = Math.Round(hs.S);
            hs.V = Math.Round(value);

            return(hs);
        }
Пример #2
0
 public RGB(RGB rg)
 {
     this.R = rg.R;
     this.G = rg.G;
     this.B = rg.B;
 }