コード例 #1
0
        private ColorCategory GetColorCategory()
        {
            var rgb = ColorConversion.ColorToRgb(this);
            var hsv = ColorConversion.RgbToHsv(rgb);

            if (hsv[1] < 0.12f)
            {
                return(ColorCategory.Grays);
            }

            float lumCutoff;

            if (hsv[1] > 0.9)
            {
                lumCutoff = 0.1f;
            }
            else if (hsv[1] > 0.8)
            {
                lumCutoff = 0.13f;
            }
            else if (hsv[1] > 0.6)
            {
                lumCutoff = 0.19f;
            }
            else if (hsv[1] > 0.4)
            {
                lumCutoff = 0.22f;
            }
            else
            {
                lumCutoff = 0.28f;
            }

            var lum = Math.Sqrt(ColorConversion.RgbToLum(rgb));

            if (lum < lumCutoff)
            {
                return(ColorCategory.Grays);
            }

            if (hsv[0] <= 26)
            {
                return(ColorCategory.Red);
            }
            if (hsv[0] <= 44)
            {
                return(ColorCategory.Orange);
            }
            if (hsv[0] <= 69)
            {
                return(ColorCategory.Yellow);
            }
            if (hsv[0] <= 152)
            {
                return(ColorCategory.Green);
            }
            if (hsv[0] <= 184)
            {
                return(ColorCategory.Cyan);
            }
            if (hsv[0] <= 257)
            {
                return(ColorCategory.Blue);
            }
            if (hsv[0] <= 296)
            {
                return(ColorCategory.Purple);
            }
            if (hsv[0] <= 330)
            {
                return(ColorCategory.Pink);
            }
            return(ColorCategory.Red);
        }