0
我需要将字符串值"#FFF"
更改为字符串"white"
更改十六进制值的字符串到一个系统颜色字符串在WPF
或者"#FF0000"
到"red"
。
如果十六进制值不是系统颜色,它只会使用十六进制值。 "#906"
将输出"#906"
。
任何想法?
我需要将字符串值"#FFF"
更改为字符串"white"
更改十六进制值的字符串到一个系统颜色字符串在WPF
或者"#FF0000"
到"red"
。
如果十六进制值不是系统颜色,它只会使用十六进制值。 "#906"
将输出"#906"
。
任何想法?
如果你只是想映射系统颜色,你可以做这样的事情。请注意,这也会返回系统的值,例如WindowBrush等,我使用continue
检查过滤出这些值。请注意,我在这里使用c#6字符串插值,但是您可以连接,但不管您喜欢。
using Color = System.Drawing.Color;
...
{
string input = $"#ff{myTextBox.Text}"; // let the user enter just the digits
input = input.ToLower(); // Needs to be lowercase, or you could use a case invariant check later
string name;
KnownColor[] values = (KnownColor[])Enum.GetValues(typeof(KnownColor));
for(int i =0; i <values.Length; i++)
{
if (i <= 25 || i >= 167) continue; // Eliminate default wpf control colors
int RealColor = Color.FromKnownColor(values[i]).ToArgb();
string ColorHex = $"{RealColor:x6}";
if ($"#{ ColorHex }"== input)
{
name = values[i].ToString();
break;
}
}
}
老实说,虽然我只是想创建自己的价值观Dictionary
,做一个简单的查找,例如:
var myColors = new Dictionary<string, string>
{
{"#FF000000", "Black"},
...
};
string colorName;
if (myColors.ContainsKey(myTextBox.Text))
colorName = myColors[myTextBox.Text];
else
colorName = myTextBox.Text;
你的意思是你有在UI这些选项来呈现用户,像一个颜色选择器或什么? –
用户将输入十六进制格式“#F00”或系统颜色“红色”的颜色值。如果它们输入的十六进制值是系统颜色,则需要输出系统颜色而不是十六进制值。 –
您是否尝试过任何代码?你应该告诉我们你有什么。 – Danielle