0

如何测试 aSystem.Drawing.Color和 a是否System.Windows.Media.Color描述相同的颜色?

我试过了

colour1 == colour2

但我得到一个错误

运算符“==”不能应用于“System.Drawing.Color”和“System.Windows.Media.Color”类型的操作数

4

3 回答 3

2

您有 2 个选项:

  1. 从一种类型转换为另一种类型,这在此处介绍,然后使用 '==' 运算符。

  2. 比较各个组件。由于它们都具有 R、G、B、A 属性作为字节,您可以简单地执行以下操作:

    bool ColorsEqual (System.Drawing.Color c1, System.Windows.Media.Color c2)
    {
        return c1.R == c2.R && c1.G == c2.G 
            && c1.B == c2.B && c1.A == c2.A;
    }
    
于 2013-02-25T10:39:13.440 回答
0

由于这两种类型没有operator==重载,您可以获取颜色的字符串值或 ARGB 值。

System.Drawing.Color c1 = System.Drawing.Color.FromArgb(255,0,0,0);
System.Windows.Media.Color c2 = System.Windows.Media.Color(255,0,0,0);
if(c1.A == c2.A && c1.R == c2.R && ...

看看这里这里

于 2013-02-25T10:38:48.657 回答
0

您可以对 System.Drawing.Color 进行扩展方法,将其转换为 System.Windows.Media.Color,然后在 System.Windows.Media.Color 类型上进行比较:

public static System.Windows.Media.Color ToMediaColor(this System.Drawing.Color color)
{
    return System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
}
于 2013-02-25T10:40:46.870 回答