我有一个从图像中获取像素的循环,并尝试查看它们是否与作为参数传递给方法的颜色相同。
我尝试了Equals
方法,但它不起作用。我也尝试了ToKnown
方法。
看起来这种匹配不起作用,因为合成两种颜色的值不匹配。
示例:
使用GetPixel:
{Name=ff000000, ARGB=(255, 0, 0, 0)}
Color.Black:
{Name=Black, ARGB=(255, 0, 0, 0)}
if (pixelColor.ToArgb().Equals(startingOffsetColor.ToArgb())) { }
上面的代码可行,但我仍然想知道是否有更好的方法或任何方法可以减少任何CPU开销,因为我在循环语句中使用它。
答案 0 :(得分:16)
According to MSDN,Color.Equality运算符......
...比Color结构的ARGB值更多。它还对一些状态标志进行了比较。如果只想比较两种颜色结构的ARGB值,请使用ToArgb方法
进行比较
因此,您使用的方法对于比较原始值
是正确的修改强>
.ToArgb()
会返回int
,因此您可以使用==
进行比较,如果您发现它过于冗长,则无需使用.Equals()
。