如何比较System.Drawing.Color和System.Windows.Media.Color?

时间:2013-02-25 10:30:59

标签: c# .net wpf winforms

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

我试过

colour1 == colour2

但是我收到了错误

  

运算符'=='不能应用于'System.Drawing.Color'和'System.Windows.Media.Color

类型的操作数

3 个答案:

答案 0 :(得分:2)

您有两个选择:

  1. 从一种类型转换为另一种类型,涵盖here,然后使用'=='运算符。

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

答案 1 :(得分: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 && ...

查看herehere

答案 2 :(得分: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);
}