2013-02-25 126 views
0

如何測試System.Drawing.ColorSystem.Windows.Media.Color是否描述相同的顏色?如何比較System.Drawing.Color和System.Windows.Media.Color?

我試圖

colour1 == colour2 

,但我得到一個錯誤

操作 '==' 不能應用於類型 '的System.Drawing.Color' 和「System.Windows.Media的操作數顏色

+0

兩種不同類型的對象。 – Derek 2013-02-25 10:33:03

+0

嗨阿妮。你建議的問題是重複的是胡說 - 它甚至不包含任何單詞! – 2013-02-25 10:34:12

+0

@ColonelPanic,使用建議的副本作爲參考,這很容易解決。看起來你已經付出了自己的努力。 – 2013-02-25 10:44:32

回答

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

你有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; 
    } 
    
0

可以提出延期方法要轉換爲系統中的System.Drawing.Color .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); 
}