C#根据RGB判断颜色

文章描述了一个名为ColorRecognize的类,它使用RGB值来判断并返回相应的颜色名称,包括基本颜色、深浅色和一些混合色。
摘要由CSDN通过智能技术生成
  public enum RGBName
    {
        [Description("红")]
        Red = 1,
        [Description("绿")]
        Green,
        [Description("蓝")]
        Blue,
        [Description("深红")]
        DarkRed,
        [Description("深绿")]
        DarkGreen,
        [Description("深蓝")]
        DarkBlue,
        [Description("浅红")]
        LightRed,
        [Description("浅绿")]
        LightGreen,
        [Description("浅蓝")]
        LightBlue,
        [Description("黄")]
        Yellow,
        [Description("青")]
        Cyan,
        [Description("紫")]
        Purple,
        [Description("深黄")]
        DarkYellow,
        [Description("深青")]
        DarkCyan,
        [Description("深紫")]
        DarkPurple,
        [Description("浅黄")]
        LightYellow,
        [Description("浅青")]
        LightCyan,
        [Description("浅紫")]
        LightPurple,
        [Description("橙")]
        Orange,
        [Description("黄绿")]
        YellowGreen,
        [Description("青绿")]
        CyanGreen,
        [Description("青蓝")]
        CyanBlue,
        [Description("紫蓝")]
        PurpleBlue,
        [Description("紫红")]
        PurpleRed,
        [Description("黑")]
        Black,
        [Description("白")]
        White,
        [Description("灰")]
        Gray,
        [Description("浅灰")]
        LightGray,
    }
   public class ColorRecognize
    {
       /// <summary>
       /// 根据RGB判断颜色
       /// </summary>
       /// <param name="Clr"></param>
       /// <returns></returns>
        public static string CLRToName(Color Clr)
        {
            double d_r = (double)Clr.R / 83;
            double d_g = (double)Clr.G / 83;
            double d_b = (double)Clr.B / 83;
            int r = (int)Math.Round(d_r);
            int g = (int)Math.Round(d_g);
            int b = (int)Math.Round(d_b);
            string rgb = r.ToString() + "," + g.ToString() + "," + b.ToString();
            #region "switch (rgb)"
            switch (rgb)
            {
                case "0,0,0":
                case "1,1,1":
                case "2,2,2":
                case "3,3,3":
                    if (r == 0) return RGBName.Black.GetDescription();
                    if (r == 1) return RGBName.Gray.GetDescription();
                    if (r == 2) return RGBName.LightGray.GetDescription();
                    if (r == 3) return RGBName.White.GetDescription();
                    break;
                case "0,0,3":
                case "0,3,0":
                case "3,0,0":
                case "1,1,3":
                case "1,3,1":
                case "3,1,1":
                case "0,1,3":
                case "0,3,1":
                case "3,0,1":
                case "1,0,3":
                case "1,3,0":
                case "3,1,0":
                case "0,0,2":
                case "0,2,0":
                case "2,0,0":
                case "1,1,2":
                case "1,2,1":
                case "2,1,1":
                case "0,1,2":
                case "0,2,1":
                case "2,0,1":
                case "1,0,2":
                case "1,2,0":
                case "2,1,0":
                    if (r == 2) return RGBName.DarkRed.GetDescription();
                    if (g == 2) return RGBName.DarkGreen.GetDescription();
                    if (b == 2) return RGBName.DarkBlue.GetDescription();
                    if (r == 3) return RGBName.Red.GetDescription();
                    if (g == 3) return RGBName.Green.GetDescription();
                    if (b == 3) return RGBName.Blue.GetDescription();
                    break;
                case "0,0,1":
                case "0,1,0":
                case "1,0,0":
                case "2,2,3":
                case "2,3,2":
                case "3,2,2":
                    if (r == 1) return RGBName.DarkRed.GetDescription();
                    if (g == 1) return RGBName.DarkGreen.GetDescription();
                    if (b == 1) return RGBName.DarkBlue.GetDescription();
                    if (r == 3) return RGBName.LightRed.GetDescription();
                    if (g == 3) return RGBName.LightGreen.GetDescription();
                    if (b == 3) return RGBName.LightBlue.GetDescription();
                    break;
                case "1,1,0":
                case "0,1,1":
                case "1,0,1":
                case "2,2,0":
                case "0,2,2":
                case "2,0,2":
                case "2,2,1":
                case "1,2,2":
                case "2,1,2":
                case "3,3,0":
                case "0,3,3":
                case "3,0,3":
                case "3,3,1":
                case "1,3,3":
                case "3,1,3":
                case "3,3,2":
                case "2,3,3":
                case "3,2,3":
                    if (r == 1 && g == 1) return RGBName.DarkYellow.GetDescription();
                    if (g == 1 && b == 1) return RGBName.DarkCyan.GetDescription();
                    if (r == 1 && b == 1) return RGBName.DarkPurple.GetDescription();
                    if (r == 2 && g == 2) return RGBName.Yellow.GetDescription();
                    if (g == 2 && b == 2) return RGBName.Cyan.GetDescription();
                    if (r == 2 && b == 2) return RGBName.Purple.GetDescription();
                    if (r == 3 && g == 3) return RGBName.LightYellow.GetDescription();
                    if (g == 3 && b == 3) return RGBName.LightCyan.GetDescription();
                    if (r == 3 && b == 3) return RGBName.LightPurple.GetDescription();
                    break;
                case "3,2,0":
                case "3,2,1":
                    return RGBName.Orange.GetDescription();
                case "2,3,0":
                case "2,3,1":
                    return RGBName.YellowGreen.GetDescription();
                case "0,3,2":
                case "1,3,2":
                    return RGBName.CyanGreen.GetDescription();
                case "0,2,3":
                case "1,2,3":
                    return RGBName.CyanBlue.GetDescription();
                case "3,0,2":
                case "3,1,2":
                    return RGBName.PurpleRed.GetDescription();
                case "2,0,3":
                case "2,1,3":
                    return RGBName.PurpleBlue.GetDescription();
                default:
                    return "Error";
            }
            #endregion
            return "Error";
        }


       
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值