Це мене заінтригувало досить довгий час.
Хтось знає алгоритм, який Windows 7 Aero використовує для визначення кольору, який слід використовувати як підсвічування курсору гарячого відстеження на кнопках панелі завдань для запущених додатків?
Це, безумовно, базується на піктограмі програми, але я не бачу конкретного шаблону, звідки отримує значення кольору.
Здається, це не таке:
- Середнє значення кольору від усієї іконки, інакше ви б
увесь часотримували коричневий колір з різнокольоровими значками, як Chrome. - На зображенні найбільше використовується колір, інакше ви отримаєте жовтий колір для піктограми студії управління SQL Server (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, потрібно було кілька років уваги та вимикань, і багато різних видів роботи, щоб остаточно розібратися. Схоже, я можу в кінцевому підсумку зламати це один у якийсь момент.)