Почему Color.FromArgb(255, 255, 255, 255)!= Color.White?
Почему Color.FromArgb(255, 255, 255, 255) не, равный Color.White? Есть ли встроенный способ сравнения только значений A, R, G, B, а не цветных имен?
Спасибо.
Ответы
Ответ 1
См. http://msdn.microsoft.com/en-us/library/e03x8ct2(VS.85).aspx
Эта структура делает только сравнения с другими цветовыми структурами. к сравнить цвета, основанные исключительно на их ARGB, вы должны использовать ToArgb метод. Это объясняется тем, что равные и Члены op_Equality определяют эквивалентности, используя не только Значение ARGB цветов. Например, Черный и FromArgb (0,0,0) не являются считается равным, поскольку черный является названный цвет и FromArgb (0,0,0) является нет.
Ответ 2
Чтобы добавить к Nick (правильный) ответ: если вы действительно этого хотели, вы могли бы написать свою собственную реализацию IEqualityComparer<Color>
и использовать ее, например, в любых алгоритмах, которые вы можете писать, которые имеют дело с цветами, где вам нужна гибкость, когда это приходит к определению цвета.
Вы знаете, что-то вроде:
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();
}
}