【问题标题】:How to compare a System.Drawing.Color and a System.Windows.Media.Color?如何比较 System.Drawing.Color 和 System.Windows.Media.Color?
【发布时间】:2013-02-25 10:30:59
【问题描述】:

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

我试过了

colour1 == colour2

但我得到一个错误

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

【问题讨论】:

  • 两种不同类型的对象。
  • 嗨,阿尼。您建议的问题是重复的,这是无稽之谈 - 它甚至不包含任何单词!
  • @ColonelPanic,使用建议的副本作为参考,这很容易解决。看起来你已经为自己付出了任何努力。

标签: c# .net wpf winforms


【解决方案1】:

你有两个选择:

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

【讨论】:

    【解决方案2】:

    由于这两种类型没有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

    【讨论】:

      【解决方案3】:

      您可以对 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);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 2011-01-26
        • 2011-06-04
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 2016-11-23
        • 1970-01-01
        • 2013-11-20
        相关资源
        最近更新 更多