有没有更好的方法来比较颜色?

时间:2016-08-12 02:49:46

标签: c# colors

所以我一直在努力比较颜色。没有什么太疯狂的深度我只想说,这是一个蓝色,紫色或橙色的阴影等。不一定只是纯色。

我在网上试过的一些解决方案是投射我的Color对象.ToArgb()并检查该值是否大于或小于相应的值。像if (Color.ToArgb() < -13107000 && Color.ToArgb() > -15000000) // Color is blueish

这样的东西

但事实证明这是低效的。除非有一些颜色图表,否则我不知道在哪里可以轻松找到这些值。我是否被指向了完全错误的方向?请建议如何正确比较C#中的颜色(可能是未命名的)。

1 个答案:

答案 0 :(得分:0)

我正在寻找一种快速的方法来直观地转移一个“阴影”的阈值。将蓝色转换为整数值。使用这个图表和一些c#代码以及@jdphenix的建议我能够做到这一点。

enter image description here

    private Color FromHex(string hex)
    {
        if (hex.StartsWith("#"))
            hex = hex.Substring(1);

        if (hex.Length != 6) throw new Exception("Color not valid");

        return Color.FromArgb(
            int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
            int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
            int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
    }

把两者放在一起:

            // Starting blue threshold, or whatever your desired threshold is
            Color BlueLowThreshold = FromHex("#00B4FF");
            int blueLowThreshold = BlueLowThreshold.ToArgb();
            // Ending blue threshold, or whatever your desired end threshold is
            Color BlueHighThreshold = FromHex("#5000FF");
            int blueHighThreshold = BlueHighThreshold.ToArgb();

感谢您的建议。