如何测试System.Drawing.Color
和System.Windows.Media.Color
是否描述相同的颜色?
我试过
colour1 == colour2
但是我收到了错误
运算符'=='不能应用于'System.Drawing.Color'和'System.Windows.Media.Color
类型的操作数
答案 0 :(得分:2)
您有两个选择:
从一种类型转换为另一种类型,涵盖here,然后使用'=='运算符。
比较各个组件。由于它们都具有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 && ...
答案 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);
}