4

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

我尝试了该Equals方法,但它不起作用。我也试过这个ToKnown方法。看起来该匹配不起作用,因为合成两种颜色的值不匹配。

例子:

使用 GetPixel:

{Name=ff000000, ARGB=(255, 0, 0, 0)}

颜色:黑色:

{Name=Black, ARGB=(255, 0, 0, 0)}
if (pixelColor.ToArgb().Equals(startingOffsetColor.ToArgb())) { }

上面的代码有效,但我仍然想知道是否有更好的方法或可以减少任何 CPU 开销的方法,因为我在循环语句中使用它。

4

1 回答 1

17

根据 MSDN,Color.Equality 运算符...

...比 Color 结构的 ARGB 值更多。它还对一些州旗进行了比较。如果只想比较两个 Color 结构的 ARGB 值,请使用 ToArgb 方法进行比较

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

编辑

.ToArgb()返回一个int所以你可以用来比较,如果你觉得它太冗长==,你不需要使用。.Equals()

于 2011-09-18T23:07:22.503 回答