比较两个Color对象

dot*_*NET 14 .net c# system.drawing colors

这个C#,VS2010和.NET 4.0.我想比较两个System.Drawing.Color对象.

价值mStartColor.ToArgb()16777215.

价值Color.Transparent.ToArgb()16777215.

价值mStartColor <> Color.TransparentTrue.

如何为Color对象实现平等?

编辑

感谢大家.我得到了答案,虽然这对我没有多大意义(请参阅我对蒂姆和戴夫下面的答案的评论).我将蒂姆的帖子标记为答案,他是第一个回答,但戴夫的回答同样有用.

Tim*_*ter 14

请务必先阅读文档:

"要仅根据其ARGB值比较颜色,您应该使用ToArgb方法.这是因为Equals和Equality成员使用的不仅仅是颜色的ARGB值来确定等效性.例如,Black和FromArgb(0,0, 0)被认为是不相等的,因为黑色是命名颜色而FromArgb(0,0,0)不是"

  • 谢谢.它确实有帮助(实际上是一个精确的答案),但对我来说没有多大意义.如果它们在所有实际目的上是等价的,为什么它们的对象不相等? (2认同)

Dav*_*ish 14

颜色结构包含更多数据,而不仅仅是实际的颜色信息,例如

Color [Transparent] 
R: 255 
G: 255 
B: 255 
A: 0 
IsKnownColor: True 
IsEmpty: False 
IsNamedColor: True 
IsSystemColor: False 
Name: Transparent 
Run Code Online (Sandbox Code Playgroud)

Color.FromArgb(16777215)

Color [A=0, R=255, G=255, B=255] 
R: 255 
G: 255 
B: 255 
A: 0 
IsKnownColor: False 
IsEmpty: False 
IsNamedColor: False 
IsSystemColor: False 
Name: ffffff 
Run Code Online (Sandbox Code Playgroud)

等于比较将使用所有这些来确定平等.你应该是你已经建议的,并使用:

Color.Transparent.ToArgb().Equals(mStartColor.ToArgb())
Run Code Online (Sandbox Code Playgroud)