如何比较GetPixel方法的颜色和Color.Black等方法中传递的颜色?

时间:2011-09-18 22:51:51

标签: c# image colors getpixel

我有一个从图像中获取像素的循环,并尝试查看它们是否与作为参数传递给方法的颜色相同。

我尝试了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开销,因为我在循环语句中使用它。

1 个答案:

答案 0 :(得分:16)

According to MSDN,Color.Equality运算符......

  

...比Color结构的ARGB值更多。它还对一些状态标志进行了比较。如果只想比较两种颜色结构的ARGB值,请使用ToArgb方法

进行比较

因此,您使用的方法对于比较原始值

是正确的

修改

.ToArgb()会返回int,因此您可以使用==进行比较,如果您发现它过于冗长,则无需使用.Equals()