c# - 如何将某些颜色分类到颜色范围?

标签 c# wpf colors rgb

如果我得到浅灰色(例如 R=G=B=200)和深灰色(例如 R=46,G=41,B=35),我想将它们分类为简单的灰色组(想象一张 table )。

那么,我怎样才能将颜色组织成颜色组呢?

最佳答案

对于颜色的视觉分类,将颜色转换为 HSL or HSV 通常更容易第一的。要检测灰色,请检查饱和度是否低于某个阈值。要检测任何其他颜色,请检查色调。

public string Classify(Color c)
{
    float hue = c.GetHue();
    float sat = c.GetSaturation();
    float lgt = c.GetLightness();

    if (lgt < 0.2)  return "Blacks";
    if (lgt > 0.8)  return "Whites";

    if (sat < 0.25) return "Grays";

    if (hue < 30)   return "Reds";
    if (hue < 90)   return "Yellows";
    if (hue < 150)  return "Greens";
    if (hue < 210)  return "Cyans";
    if (hue < 270)  return "Blues";
    if (hue < 330)  return "Magentas";
    return "Reds";
}

您当然可以使用其他一些部门。

我制作了一个简单的 JavaScript 应用程序来测试它:Color classification

关于c# - 如何将某些颜色分类到颜色范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457601/

相关文章:

python - Matplotlib:事后更改颜色图

c# - aspx页面重定向到新页面

c# - 客户数据库还是统一数据库哪个更好?

c# - 随机数生成器,在一个范围内选择 3 个,在某些迭代中返回 2 个一组

.net - 鼠标悬停时 WPF 按钮背景透明度

c# - 通过 WCF 更新应用程序

wpf - DataGrid 通过单击 UpdateSourceTrigger = SourceUpdated 捕获单元格值更改事件

colors - Dribble 的颜色搜索是如何工作的?

python - 如何在 python 上打印彩色的特定单词?

c# - MySQL(和c#?)转换字符格式