代码之家  ›  专栏  ›  技术社区  ›  abenci

为什么是颜色。来自argb(255,255,255,255)!=颜色。白色?

  •  14
  • abenci  · 技术社区  · 14 年前

    为什么Color.FromArgb(255,255,255,255)是 等于颜色。白色?有没有内置的方法来比较A,R,G,B值而不是颜色名称?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  17
  •   Nick    14 年前

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

    这个结构只做比较 其他颜色结构。到 只根据颜色比较 ARGB值,应该使用ToArgb 方法。这是因为 平等成员决定 等价性不仅仅使用 颜色的ARGB值。例如, 黑色和FromArgb(0,0,0)不是 被认为是平等的,因为黑色是 命名颜色和FromArgb(0,0,0)是 不是。

        2
  •  5
  •   Dan Tao    14 年前

    补充尼克(正确)的回答:如果你 真正地 想要,你可以自己写 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();
        }
    }