Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将颜色代码替换为颜色名称的脚本?_C#_Html_Colors_Batch File - Fatal编程技术网

C# 将颜色代码替换为颜色名称的脚本?

C# 将颜色代码替换为颜色名称的脚本?,c#,html,colors,batch-file,C#,Html,Colors,Batch File,有人知道如何将颜色代码更改为颜色名称吗?我有一个带有颜色代码的XML: 我需要:#FFFFFF替换为白色和#000000替换为黑色等 如果你知道一个脚本、批处理、C#程序或其他相关的东西,我将不胜感激 谢谢:)这有点糟糕,可能会给出一些意想不到的值,但从技术上讲是正确的。请随时使用您自己的颜色名称列表进行更新: public string GetColorName(int r, int g, int b) { return GetColorName(Color.F

有人知道如何将颜色代码更改为颜色名称吗?我有一个带有颜色代码的XML: 我需要:
#FFFFFF
替换为
白色
#000000
替换为
黑色

如果你知道一个脚本、批处理、C#程序或其他相关的东西,我将不胜感激


谢谢:)

这有点糟糕,可能会给出一些意想不到的值,但从技术上讲是正确的。请随时使用您自己的颜色名称列表进行更新:

    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;
    }

以下是一个方法,如果找不到名称或RGB值,则该方法将检索名称或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 Color[]colors=typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(pi=>pi.CanRead&&pi.PropertyType==typeof(颜色))
.Select(pi=>(颜色)pi.GetValue(null,null))
.ToArray();
静态IEnumerable FindColor名称(字符串htmlColor)
{
//比如“#RRGGBB”或“#AARRGGBB”或“Red”或“Red”
var color=ColorTranslator.FromHtml(htmlColor);
返回颜色。其中(cc=>cc.R==color.R
&&cc.G==color.G
&&cc.B==color.B
&&cc.A==color.A)
.Select(cc=>cc.Name);
}
静态字符串FindColor名称(字符串htmlColor)
{
返回FindColorNames(htmlColor).FirstOrDefault()??htmlColor;
}
//#FFFFFF:白色
//000000:黑色
// #333333: 333333
//#FF00FF:紫红色(洋红也匹配)
使用更好的搜索模式的更新:

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;
}
static Dictionary colors=static Color[]colors=typeof(Color)
.GetProperties(BindingFlags.Public | BindingFlags.Static)
.Where(pi=>pi.CanRead&&pi.PropertyType==typeof(颜色))
.Select(pi=>(颜色)pi.GetValue(null,null))
.GroupBy(cc=>cc.ToArgb())
.ToDictionary(gg=>gg.Key,gg.Select(cc=>cc.Name.ToArray());
静态IEnumerable FindColor名称(字符串htmlColor)
{
var color=ColorTranslator.FromHtml(htmlColor);
字符串[]名称;
if(!colors.TryGetValue(color.ToArgb(),out name))
{
返回可枚举的.Empty();
}
返回姓名;
}
静态字符串FindColor名称(字符串htmlColor)
{
返回FindColorNames.FirstOrDefault()??htmlColor;
}

您为什么要这样做?你能在这里提供一些上下文吗?我想你必须自己创建脚本,这个表可能会有帮助-@JeremyThompson:switched to
colorplator
根据你的答案进行转换。谢谢
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;
}