Это заинтриговало меня довольно давно.
Кто-нибудь знает алгоритм, который Windows 7 Aero использует для определения цвета, который будет использоваться в качестве выделения при наведении курсора на горячие кнопки на кнопках панели задач для работающих в данный момент приложений?
Это определенно основано на значке приложения, но я не могу видеть определенный образец того, откуда он получает значение цвета.
Похоже, что это не одно из следующих:
- Среднее значение цвета для всей иконки, в противном случае вы бы
все времястановились коричневыми с разноцветными значками, такими как Chrome. - В изображении используется больше всего цвета, в противном случае вы получите желтый значок SQL Server Management Studio (6-й слева). Кроме того, значок Chrome использовал красный, зеленый и желтый в равной степени.
- Цвет, расположенный в определенных пиксельных координатах на значке, потому что Chrome красный - это указывает на верхнюю часть значка - а Notepad ++ (2-й справа) - зеленый - указывает на нижнюю часть значка.
Я задал этот вопрос на ux.stackoverflow.com, и он был закрыт как не по теме, но кто-то ответил со следующим:
Как описано Рэймондом Ченом в этой статье в блоге MSDN :
Некоторые люди спрашивают, как это делается. Это действительно ничего особенного. Код просто ищет преобладающий цвет в значке. (И, поскольку визуальные дизайнеры являются сторонниками такого рода вещей, черный, белый и оттенки серого не считаются «цветами» для целей этого расчета.)
Однако я не был действительно удовлетворен этим ответом, потому что он не объясняет, как рассчитывается «преобладающий» цвет. Конечно, на значке SQL Management Studio преобладающим цветом, по моему мнению, является желтый. Все же основной момент - зеленый. Я хочу знать, в частности, что это за алгоритм.
An average colour value from the entire icon, otherwise you would get brown all the time.
Это не имеет смысла. Например, как значки Skype , командной строки или µTorrent будут в среднем коричневыми? ಠ_ ఠ (В прошлый раз, когда я заново разработал один из алгоритмов вычисления цвета в Windows, потребовалось несколько лет внимания и много разных видов работы, чтобы наконец понять это. Похоже, что я могу в итоге взломать это один в какой-то момент.)