Warum ist Color.FromArgb (255, 255, 255, 255) nicht gleich Color.White? Gibt es eine eingebaute Möglichkeit, nur A-, R-, G-, B-Werte und nicht Farbnamen zu vergleichen?Warum Color.FromArgb (255, 255, 255, 255)! = Farbe.Weiß?
Danke.
Warum ist Color.FromArgb (255, 255, 255, 255) nicht gleich Color.White? Gibt es eine eingebaute Möglichkeit, nur A-, R-, G-, B-Werte und nicht Farbnamen zu vergleichen?Warum Color.FromArgb (255, 255, 255, 255)! = Farbe.Weiß?
Danke.
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.
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();
}
}
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 –