所以我一直在努力比较颜色。没有什么太疯狂的深度我只想说,这是一个蓝色,紫色或橙色的阴影等。不一定只是纯色。
我在网上试过的一些解决方案是投射我的Color对象.ToArgb()
并检查该值是否大于或小于相应的值。像if (Color.ToArgb() < -13107000 && Color.ToArgb() > -15000000) // Color is blueish
但事实证明这是低效的。除非有一些颜色图表,否则我不知道在哪里可以轻松找到这些值。我是否被指向了完全错误的方向?请建议如何正确比较C#中的颜色(可能是未命名的)。
答案 0 :(得分:0)
我正在寻找一种快速的方法来直观地转移一个“阴影”的阈值。将蓝色转换为整数值。使用这个图表和一些c#代码以及@jdphenix的建议我能够做到这一点。
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();
感谢您的建议。