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