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

发布于 2024-10-03 06:24:26 字数 125 浏览 3 评论 0原文

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

谢谢。

Why Color.FromArgb(255, 255, 255, 255) is not equal to Color.White ? Is there any built-in way to compare only A,R,G,B values and not color names?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷清清 2024-10-10 06:24:26

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

该结构仅进行比较
与其他颜色结构。到
仅根据颜色来比较颜色
ARGB 值,您应该使用 ToArgb
方法。这是因为等于和
op_Equality 成员确定
等价性不仅仅使用
颜色的 ARGB 值。例如,
Black 和 FromArgb(0,0,0) 不是
被认为是平等的,因为黑色是
命名颜色和 FromArgb(0,0,0) 是
不是。

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

This structure only does comparisons
with other Color structures. To
compare colors based solely on their
ARGB values, you should use the ToArgb
method. This is because the Equals and
op_Equality members determine
equivalency using more than just the
ARGB value of the colors. For example,
Black and FromArgb(0,0,0) are not
considered equal, since Black is a
named color and FromArgb(0,0,0) is
not.

和我恋爱吧 2024-10-10 06:24:26

添加到尼克的(正确)答案:如果您真的想要,您可以编写自己的 IEqualityComparer 实现并在例如您可能使用的任何算法中使用它编写处理颜色的文章,在确定颜色相等性时您需要灵活性。

你知道,比如:

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();
    }
}

To add to Nick's (correct) answer: if you really wanted, you could write your own IEqualityComparer<Color> implementation and use that in, e.g., any algorithms you may be writing that deal with colors, where you want flexibility when it comes to color equality determination.

You know, something like:

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();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文