如何比较使用GetPixel方法获取的颜色和作为参数传递进方法的颜色,例如Color.Black?

4

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

我尝试了 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个回答

17

根据MSDN的说法, Color.Equality运算符比较Color结构的ARGB值以外,还会比较某些状态标志。如果您只想比较两个Color结构的ARGB值,可以使用ToArgb方法进行比较。

所以你现在使用的方法是正确的,用于比较原始值。

编辑

.ToArgb() 返回一个 int,因此您可以直接使用 == 进行比较,如果您认为使用 .Equals() 太冗长了,那么您无需使用它。


是的,它只是一个整数,所以我可以使用"=="。 但是我的Java背景让我先检查返回类型,然后直接使用Equals。 - Relok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接