2010-11-16 18 views

Respuesta

17

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

Esta estructura única hace comparaciones con otras estructuras color. Para comparar colores basados ​​únicamente en sus valores ARGB, debe usar el método ToArgb . Esto se debe a que los miembros Igual y op_Equality determinan la equivalencia utilizando más que el valor ARGB de los colores. Por ejemplo, Negro y FromArgb (0,0,0) no son considerados iguales, ya que Negro es un color con nombre y FromArgb (0,0,0) es no.

+5

Sólo para añadir a esto la clase de color en System.Windows.Media * * es equivalente en ARGB 'System.Windows.Media.Color.FromArgb (255, 255 , 255, 255) == System.Windows.Media.Colors.White 'no es igual a cierto –

4

Para añadir a la respuesta de Nick (correcto): si realmente querían, se podría escribir su propio IEqualityComparer<Color> implementación y el uso que en, por ejemplo, cualquier algoritmo que puede estar escribiendo que tienen que ver con los colores, donde desea flexibilidad cuando se trata de determinar la igualdad de color.

Ya sabes, algo así como:

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(); 
    } 
} 
Cuestiones relacionadas