C#中怎么实现将RGB值转化为对应的颜色名称

比如给定RGB值为255255000,怎么得到它所对应的颜色,也就是yellow这个字符串... 比如给定RGB值为255255000,怎么得到它所对应的颜色,也就是yellow这个字符串 展开
 我来答
哲事姓无
推荐于2016-10-10 · TA获得超过1176个赞
知道小有建树答主
回答量:903
采纳率:100%
帮助的人:442万
展开全部
// 看看这样行不行

    [STAThread]
    public static void Main(string[] args)
    {
        var argbColor = Color.FromArgb(255, 255, 0, 0);

        var colorName = FindColorName(argbColor);
        if (string.IsNullOrEmpty(colorName))
            Console.WriteLine("未找到");
        else
            Console.WriteLine(colorName);

        Console.ReadKey();
    }

    private static string FindColorName(Color argbColor)
    {
        var propertyInfos = typeof (Color).GetProperties(BindingFlags.Public | BindingFlags.Static);
        foreach (var propertyInfo in propertyInfos)
        {
            if (!propertyInfo.CanRead)
                continue;

            var value = propertyInfo.GetValue(null, null);
            if (!(value is Color))
                continue;

            if (((Color) value).ToArgb() == argbColor.ToArgb())
                return propertyInfo.Name;
        }

        return null;
    }
追问
好像可以,但是我是新手,你这个程序其实我都不太清楚该放在哪里运行,是winform还是控制台
追答
放在winfrom或是控制台都可以。我的演示代码是使用控制台程序。把FindColorName这个函数放在需要使用中类中即可。还有记得引用程序集System.Drawing.dll .

原理和你说下,因为Color中定义了很多常用颜色名称,比如Color.Red。这段代码就是通过反射取出所有这些定义的颜色名称,然后与需要查询的颜色进行比较,如果一致就返回颜色名称。
cdinten
2013-08-09 · TA获得超过6589个赞
知道大有可为答主
回答量:3562
采纳率:56%
帮助的人:1332万
展开全部
Color.Name只能为已知颜色,并不能表示所有的颜色,所以你只能自己构造一个对比的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5023f88
推荐于2016-08-26 · TA获得超过624个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:59.9万
展开全部
没有什么好的办法获取yellow这个字符串,因为system.drawing.color是个结构体,没法FOREACH循环。
建议楼主建立一个hashtable存储“颜色名”,“rgb数值”.之后对RGB值进行foreach匹配。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式