有沒有人知道將顏色代碼更改爲顏色名稱的方法?我有一個XML與顏色代碼: 我需要:#FFFFFF
更換到White
和#000000
到Black
等將顏色代碼替換爲顏色名稱的腳本?
如果你知道一個腳本,批處理,C#程序,還是要到這一點,生病是極大的讚賞
謝謝:)
有沒有人知道將顏色代碼更改爲顏色名稱的方法?我有一個XML與顏色代碼: 我需要:#FFFFFF
更換到White
和#000000
到Black
等將顏色代碼替換爲顏色名稱的腳本?
如果你知道一個腳本,批處理,C#程序,還是要到這一點,生病是極大的讚賞
謝謝:)
這裏,如果沒有被發現,這將檢索名稱或RGB值的方法:它採用
static Color[] colors = typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(pi => pi.CanRead && pi.PropertyType == typeof(Color))
.Select(pi => (Color)pi.GetValue(null, null))
.ToArray();
static IEnumerable<string> FindColorNames(string htmlColor)
{
// like "#RRGGBB" or "#AARRGGBB" or "Red" or "red"
var color = ColorTranslator.FromHtml(htmlColor);
return colors.Where(cc => cc.R == color.R
&& cc.G == color.G
&& cc.B == color.B
&& cc.A == color.A)
.Select(cc => cc.Name);
}
static string FindColorName(string htmlColor)
{
return FindColorNames(htmlColor).FirstOrDefault() ?? htmlColor;
}
// #FFFFFF: White
// #000000: Black
// #333333: 333333
// #FF00FF: Fuchsia (Magenta also matches)
更新一個更好的搜索模式:
static Dictionary<int, string[]> colors = static Color[] colors = typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(pi => pi.CanRead && pi.PropertyType == typeof(Color))
.Select(pi => (Color)pi.GetValue(null, null))
.GroupBy(cc => cc.ToArgb())
.ToDictionary(gg => gg.Key, gg.Select(cc => cc.Name).ToArray());
static IEnumerable<string> FindColorNames(string htmlColor)
{
var color = ColorTranslator.FromHtml(htmlColor);
string[] names;
if (!colors.TryGetValue(color.ToArgb(), out names))
{
return Enumerable.Empty<string>();
}
return names;
}
static string FindColorName(string htmlColor)
{
return FindColorNames.FirstOrDefault() ?? htmlColor;
}
+1,這就是我想要的。 .. –
@JeremyThompson:切換到「ColorTranslator」,根據您的答案進行轉換。謝謝! – user7116
這有點吮吸,並可能會給一些意想不到的價值,但在技術上是正確的。隨時與自己的顏色名稱列表更新:
public string GetColorName(int r, int g, int b)
{
return GetColorName(Color.FromArgb(r, g, b));
}
public string GetColorName(Color color)
{
foreach (var knownColorName in Enum.GetNames(typeof(KnownColor)))
{
var knownColor = Color.FromName(knownColorName);
if (knownColor.R == color.R && knownColor.G == color.G && knownColor.B == color.B)
{
return knownColorName;
}
}
return color.Name;
}
System.Drawing.ColorTranslator.FromHtml("#FFFFFF")
Color.FromArgb(255, 255, 255, 255).ToArgb() == Color.White.ToArgb()
給出:'ffffffff' – user7116
爲什麼你想要?你能在這裏提供一些背景嗎? – dougajmcdonald
我想你必須自己創建腳本,這張表可能會有幫助 - http://www.w3schools.com/html/html_colorvalues.asp –