c# - 用于将颜色代码替换为颜色名称的脚本?

标签 c# html colors batch-file

有谁知道将颜色代码更改为颜色名称的方法吗?我有一个带有颜色代码的 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;
}

关于c# - 用于将颜色代码替换为颜色名称的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423874/

相关文章:

c# - 访问 Linq 查询的基本列表

html - CSS - 试图删除网站上的空白

javascript - HTML JavaScript - 带有额外/可选字段的表单问题

javascript - Cmd + 文本选择不起作用,只允许在文本字段输入数字

html - hr 标签在彩色背景下显示 2 种颜色的线条

c# - 属性 'Text' 上的 ContentPropertyAttribute 无效

c# - 使用 Fluent NHibernate 批量插入实体集合

c# - 将列表框项目从一个列表框移动到另一个列表框?

colors - 管理 gnuplot 中的调色板指示器

javascript - 如何在随机十六进制颜色生成器上设置不变的透明度