这是我写的伪代码
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
。
关于如何做到这一点的任何想法?
答案 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
,您将看到相应的数值。