コード例 #1
0
ファイル: PaintFunctions.cs プロジェクト: Bananattack/verge3
        // credit to foley/van dam gfx book
        public static HSBColor ColorToHsb(Color c)
        {
            float minval,maxval,delta;
            float r=c.R/255.0f,g=c.G/255.0f,b=c.B/255.0f;
            HSBColor hsbc = new HSBColor();

            maxval = Math.Max( r, Math.Max(g,b) );
            minval = Math.Min( r, Math.Min(g,b) );

            hsbc.B = (maxval + minval) / 2.0f;

            if(maxval==minval)
            {
                // grayscale
                hsbc.S = 0.0f;
                hsbc.H = 0.0f;
                return hsbc;
            }
            if(hsbc.B < 0.5f)
                hsbc.S = (maxval - minval) / (maxval + minval);
            else
                hsbc.S = (maxval - minval) / (2.0f - maxval - minval);
            delta = maxval-minval;

            if(r==maxval)
                hsbc.H = (g-b) / delta;
            else if (g==maxval)
                hsbc.H = 2.0f + (b-r) / delta;
            else if (b==maxval)
                hsbc.H = 4.0f + (r-g) / delta;

            hsbc.H = hsbc.H * 60.0f;
            while(hsbc.H<0.0f) hsbc.H += 360.0f;
            while(hsbc.H>360.0f) hsbc.H -= 360.0f;
            return hsbc;
        }