C# 如何在c windows应用程序中获取颜色的颜色名称字符串
我正在研究一些颜色的阴影,我已经创建了一些颜色的自定义属性,如C# 如何在c windows应用程序中获取颜色的颜色名称字符串,c#,windows,colors,C#,Windows,Colors,我正在研究一些颜色的阴影,我已经创建了一些颜色的自定义属性,如 public struct StaticColors { //White Shades public static Color White = ColorTranslator.FromHtml("#ecf0f1"); public static Color White_1 = ColorTranslator.FromHtml("#c5d1d4&qu
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 varibale中使用白色,这样我可以与其他颜色连接,但我得到的是RGBA值的字符串形式
任何人都可以帮助我将颜色转换为字符串吗?一种方法是使用表达式,它返回成员的字符串名称:
var ColorName = nameof(StaticColors.White);
如果希望名称成为字段的属性,另一种方法是将颜色类包装在自己的自定义结构中,并为其指定名称属性:
public struct StaticColor
{
public string Name { get; }
public Color Color { get; }
public StaticColor(string name, Color color)
{
Name = name;
Color = color;
}
}
然后,在StaticColors结构中,可以使用此类型的字段而不是颜色:
现在,您可以访问任何属性的颜色或名称:
var colorName = StaticColors.White.Name;
var colorColor = StaticColors.White.Color;
您必须编写自己的方法来将颜色转换为字符串,因为没有内置代码可能知道您希望调用值为a8babf White_2的颜色。我只需要将颜色转换为字符串,如//public static Color White,然后我需要在具有相同属性名的字符串数据类型中使用该颜色数据类型。但是我不知道怎么做。当你这样做的时候,你得到了颜色类的ToString实现。如果要获取StaticColor类的字段名,则需要使用反射。或者,你可以在你自己的自定义类中包装颜色,该类有一个Name属性和一个Color属性。这不是我想要的,但是你的替代解决方案做得很好!非常感谢你的帮助哦,我想出了另一种方法——只用表达的名字!我在顶部更新了我的答案,说明了如何做。
var colorName = StaticColors.White.Name;
var colorColor = StaticColors.White.Color;