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

Rel*_*lok 4 c# image colors getpixel

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

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

例:

使用GetPixel:

{Name=ff000000, ARGB=(255, 0, 0, 0)}
Run Code Online (Sandbox Code Playgroud)

Color.Black:

{Name=Black, ARGB=(255, 0, 0, 0)}
if (pixelColor.ToArgb().Equals(startingOffsetColor.ToArgb())) { }
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*aas 16

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

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

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

编辑

.ToArgb()返回一个int所以你只能==用于比较,你不需要使用,.Equals()如果你发现它太冗长.