2010-11-16 9 views

Antwort

17

Siehe http://msdn.microsoft.com/en-us/library/e03x8ct2(VS.85).aspx

Diese Struktur nur Vergleiche macht mit anderen Farbstrukturen. Um Farben basierend ausschließlich auf ihren ARGB-Werten zu vergleichen, sollten Sie die ToArgb Methode verwenden. Dies liegt daran, dass die Equals- und op_Equality-Mitglieder Äquivalenz unter Verwendung von mehr als nur dem ARGB-Wert der Farben bestimmen. Zum Beispiel werden Black und FromArgb (0,0,0) nicht als gleich angesehen, da Black eine genannte Farbe ist und FromArgb (0,0,0) nicht ist.

+5

Gerade dies die Farbklasse in System.Windows.Media * hinzuzufügen ist * Äquivalent auf ARGB ‚System.Windows.Media.Color.FromArgb (255, 255 , 255, 255) == System.Windows.Media.Colors.White 'ist gleich wahr –

4

Nicks (richtige) Antwort hinzufügen: Wenn Sie wirklich wollten, können Sie Ihre eigene IEqualityComparer<Color> Implementierung schreiben könnte und verwenden, die zum Beispiel in der alle Algorithmen Sie mit Farben, die viel schreiben können, wo Sie wollen Flexibilität, wenn es um die Bestimmung der Farbgleichheit geht.

Wissen Sie, so etwas wie:

public class ColorComparer : IEqualityComparer<Color> 
{ 
    public bool Equals(Color x, Color y) 
    { 
     return x.ToArgb() == y.ToArgb(); 
    } 

    public int GetHashCode(Color color) 
    { 
     return color.ToArgb(); 
    } 
} 
Verwandte Themen