为什么选择Color.FromArgb(255,255,255,255)!= Color.White?

时间:2010-11-16 14:26:08

标签: .net gdi+

为什么Color.FromArgb(255,255,255,255)的等于Color.White?是否有任何内置方法只比较A,R,G,B值而不是颜色名称?

感谢。

2 个答案:

答案 0 :(得分:17)

请参阅http://msdn.microsoft.com/en-us/library/e03x8ct2(VS.85).aspx

  

此结构仅进行比较   与其他颜色结构。至   比较颜色完全基于他们的   ARGB值,您应该使用ToArgb   方法。这是因为等于和   op_Equality成员确定   相当于使用的不仅仅是   ARGB值的颜色。例如,   黑色和FromArgb(0,0,0)不是   被认为是平等的,因为黑色是一个   命名颜色和FromArgb(0,0,0)是   不

答案 1 :(得分:5)

添加到Nick的(正确的)答案:如果你真的想要,你可以编写自己的IEqualityComparer<Color>实现并使用它,例如,你可能正在写的任何算法有颜色,在色彩平等测定方面你需要灵活性。

你知道,比如:

public class ColorComparer : IEqualityComparer<Color>
{
    public bool Equals(Color x, Color y)
    {
        return x.ToArgb() == y.ToArgb();
    }

    public int GetHashCode(Color color)
    {
        return color.ToArgb();
    }
}