Подтвердить что ты не робот

Сравнить два объекта Color

Это VS2010 и .NET 4.0. Я пытаюсь сравнить два объекта System.Drawing.Color.

Значение mStartColor.ToArgb() равно 16777215.

Значение Color.Transparent.ToArgb() равно 16777215.

Значение mStartColor <> Color.Transparent равно True.

Как реализуется равенство для объектов Color?

РЕДАКТИРОВАТЬ

Спасибо всем. Я получил свой ответ, хотя он не имеет особого смысла для меня (см. Мои комментарии к ответам Тима и Дейва ниже). Я отмечу Тим пост как ответ, и он был первым, кто ответил, но ответ Дейва одинаково информативен.

4b9b3361

Ответ 1

Всегда сначала читайте документацию:

"Для сравнения цветов, основанных исключительно на их значениях ARGB, следует использовать метод ToArgb. Это связано с тем, что члены Equals и Equality определяют эквивалентность, используя не только значение ARGB цветов. Например, Black и FromArgb (0,0, 0) не считаются равными, так как черный является именованным цветом, а FromArgb (0,0,0) не является "

Ответ 2

У структур цвета есть больше данных, содержащихся в них, чем только фактическая информация о цвете, например

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 

Равные сравнения будут использовать все это для определения равенства. вы должны быть diong, что вы уже предложили, и использовать:

Color.Transparent.ToArgb().Equals(mStartColor.ToArgb())

Ответ 3

Вы можете написать метод расширения, который бы сравнивал значение ARGB двух цветовых объектов и возвращал true, если они одинаковы.

Вот Документация MSDN по методам расширения.