Compare two Color objects

前端 未结 3 1607
我寻月下人不归
我寻月下人不归 2020-12-03 14:14

This is VS2010 and .NET 4.0. I\'m trying to compare two System.Drawing.Color objects.

The value of mStartColor.ToArgb() is 16777215

相关标签:
3条回答
  • 2020-12-03 15:05

    Colour structs have more data contained in them, than just the actual colour information, such as

    Color [Transparent] 
    R: 255 
    G: 255 
    B: 255 
    A: 0 
    IsKnownColor: True 
    IsEmpty: False 
    IsNamedColor: True 
    IsSystemColor: False 
    Name: Transparent 
    

    Color.FromArgb(16777215)

    Color [A=0, R=255, G=255, B=255] 
    R: 255 
    G: 255 
    B: 255 
    A: 0 
    IsKnownColor: False 
    IsEmpty: False 
    IsNamedColor: False 
    IsSystemColor: False 
    Name: ffffff 
    

    Equals comparisons will use all of these to determine equality. you should be diong what you already suggested, and use:

    Color.Transparent.ToArgb().Equals(mStartColor.ToArgb())
    
    0 讨论(0)
  • 2020-12-03 15:15

    Always read the documentation first:

    "To compare colors based solely on their ARGB values, you should use the ToArgb method. This is because the Equals and Equality members determine equivalency using more than just the ARGB value of the colors. For example, Black and FromArgb(0,0,0) are not considered equal, since Black is a named color and FromArgb(0,0,0) is not"

    0 讨论(0)
  • 2020-12-03 15:15

    You could write an extension method which would compare the ARGB value of two colour objects and return true if they are the same.

    Here is the MSDN Documentation on extension methods.

    0 讨论(0)
提交回复
热议问题