如何在C#Windows应用程序中获取颜色的颜色名称字符串

问题描述

我正在开发一些颜色,因为我已经创建了一些自定义颜色的属性。

public struct StaticColors
    {
        //White Shades
        public static Color White = ColorTranslator.FromHtml("#ecf0f1");
        public static Color White_1 = ColorTranslator.FromHtml("#c5d1d4");
        public static Color White_2 = ColorTranslator.FromHtml("#a8babf");

        //Red Shades
        public static Color Red = ColorTranslator.FromHtml("#db2828");
        public static Color Red_1 = ColorTranslator.FromHtml("#a41b1b");
        public static Color Red_2 = ColorTranslator.FromHtml("#781414");
    }

现在我想要任何颜色的字符串...

var ColorName = StaticColors.White.ToString() 

然后我需要在ColorName变量中使用“白色”,以便可以与其他字符串连接,但是我得到的是RGBA值的字符串形式。

有人可以帮助我将Color转换为字符串吗?

解决方法

执行此操作的一种方法是使用nameof表达式,该表达式返回成员的字符串名称:

 var ColorName = nameof(StaticColors.White);

如果希望Name成为字段的属性,则另一种方法是将Color类包装在您自己的自定义结构中,并为其提供Name属性:

public struct StaticColor
{
    public string Name { get; }
    public Color Color { get; }

    public StaticColor(string name,Color color)
    {
        Name = name;
        Color = color;
    }
}

然后在您的StaticColors结构中,您可以拥有这种类型的字段,而不是Color

public struct StaticColors
{
    //White Shades
    public static StaticColor White = 
        new StaticColor("White",ColorTranslator.FromHtml("#ecf0f1"));
    public static StaticColor White_1 = 
        new StaticColor("White_1",ColorTranslator.FromHtml("#c5d1d4"));
    public static StaticColor White_2 = 
        new StaticColor("White_2",ColorTranslator.FromHtml("#a8babf"));

    //Red Shades
    public static StaticColor Red = 
        new StaticColor("Red",ColorTranslator.FromHtml("#db2828"));
    public static StaticColor Red_1 = 
        new StaticColor("Red_1",ColorTranslator.FromHtml("#a41b1b"));
    public static StaticColor Red_2 = 
        new StaticColor("Red_2",ColorTranslator.FromHtml("#781414"));
}

现在您可以访问任何属性的ColorName

var colorName = StaticColors.White.Name;
var colorColor = StaticColors.White.Color;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...