C# winforms 输入颜色转换颜色名

本文告诉大家如何输入颜色,如0xFFFF8000转换为 Orange 在 winforms 程序

可以使用下面代码转换

    public static class HexColorTranslator
    {
        private static Dictionary<string, string> _hex2Name;

        private static Dictionary<string, string> Hex2Name
        {
            get
            {
                if (_hex2Name == null)
                {
                    _hex2Name = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
                    foreach (KnownColor ce in typeof(KnownColor).GetEnumValues())
                    {
                        var name = ce.ToString();
                        var color = Color.FromKnownColor(ce);
                        var hex = HexConverter(color);
                        _hex2Name[hex] = name;
                    }
                }

                return _hex2Name;
            }
        }

        private static string HexConverter(Color c)
        {
            return c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
        }

        public static string GetKnownColorFromHex(string hex)
        {
            hex = hex.TrimStart('#');
            if (Hex2Name.TryGetValue(hex, out var result))
            {
                return result;
            }

            return "???";
        }
    }

调用的方式是传入颜色

HexColorTranslator.GetKnownColorFromHex("#FFFF8000");

参见: https://stackoverflow.com/a/51238017/6116637


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现折线图表

1152
来自专栏菩提树下的杨过

基于sliverlight + wcf的web 文字版IM 示例

演示地址: http://task.24city.com/default.html 预览界面: ? 一、布局 采用Grid布局,5行2列 第一行:为登录/注册信...

3436
来自专栏Core Net

C# 处理Word自动生成报告 四、程序处理

5257
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现饼图图表

1132
来自专栏GreenLeaves

C#核编之System.Console类

      顾名思义,Console类封装了基于控制台的输入输出和错误流的操作,下面列举一些System.Console类常用的成员的,这些成员能为简单的命令行...

2035
来自专栏菩提树下的杨过

db4o 7.4 for .net3.5试用手记

db4o虽然出来很久了,一直没怎么关注,今天随手试了下,对于小型应用还是不错的,至少省去了ORM的麻烦,一切皆对象,一切都变得那么自然。 下载地址:http:/...

2329
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现条形图的展示

751
来自专栏.Net移动开发

.Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何实现线状图表

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

1292
来自专栏听雨堂

程序实现下载文件或者打开文件

FileInfo DownloadFile = new FileInfo("c:\\a.doc"); // 下面到就是读取文件,通过数据流的方式下载了。 ...

1925
来自专栏飞扬的花生

合并两个结构完全相同的DataTable

两个结构一模一样的DataTable如何合并? 例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到...

2155

扫码关注云+社区

领取腾讯云代金券