不确定如何将其转换为Hex?

时间:2016-08-25 04:55:35

标签: c# enums

这是我写的伪代码

Color temp = Color.FromArgb(Settings.Default["accentColorSetting"].ToString() + "200");
statusInfo.ForeColor = Color.FromArgb(temp.R, temp.G, temp.B);//(R, G, B)

问题的部分是Color temp = Color.FromArgb(Settings.Default["accentColorSetting"].ToString() + "200");

"accentColorSetting"内的文字为Orange,且为string

这是我正在看的代码 MaterialSkin Code

我已经完成了所有设置和工作,这是我现在遇到的唯一部分。

根据我的理解,Color temp = Color.FromArgb(Settings.Default["accentColorSetting"].ToString() + "200");需要放置一个Hex颜色,因此设置内部的字符串将为Orange,然后我链接的Materialskin代码显示此内容Orange200 = 0xFFAB40,所以我希望将Orange200替换为0xFFAB40

关于如何做到这一点的任何想法?

3 个答案:

答案 0 :(得分:1)

我认为您必须使用Color.FromName,它会为您提供与您提供的名称相对应的颜色。如果是这样,您的代码将如下所示:

Color temp = Color.FromName(Settings.Default["accentColorSetting"].ToString());

如您所说,Settings.Default["accentColorSetting"]的值为orange注意: - 你可以在设置中添加颜色类型条目,在这种情况下这对你来说是另一个好主意

答案 1 :(得分:1)

您可以尝试使用Enum.TryParse https://msdn.microsoft.com/en-us/library/system.enum.tryparse(v=vs.110).aspx

Primary colorValue; Enum.TryParse("Orange200", out colorValue);

答案 2 :(得分:0)

这是你需要做的:

string colorString = Settings.Default["accentColorSetting"].ToString() + "200";
Accent colorEnum;
Enum.TryParse(colorString, out colorEnum);
statusInfo.ForeColor = Color.FromArgb((int)colorEnum);

首先,找到与您的字符串对应的enum,然后只需使用该值即可获得相应的Color

实际上没有涉及到十六进制。这些枚举都是整数,只是它们是用十六进制编写的,以便更简单的视觉理解,但它们只不过是数值。例如,您可以执行(int)Primary.BlueGrey50,您将看到相应的数值。