33 коровы – Контрастный текст на фоне произвольного цвета - RIA разработка, Flex, Action Script, AIR, Eclipse, Monkey script

Контрастный текст на фоне произвольного цвета

May 10, 2009 – 4:11 pm

Недавно встала задача найти алгоритм как сделать контрастный текст на фоне произвольного цвета.

В начале я поэксперементировал с HSL и HSB представлением цвета. Для HSB я нашел алгорим на ActionScript 1, экспортнул его, но он оказался глючным. Поискав далее я нашел класс HSBColor от Adobe на ActionScript3. Его нет в 3 flexframework и как я понимаю это запчасть от Gumbo (Flex 4). Работает он хорошо, но не решает нужной мне задачи: в синих оттенках текст не контрастный.

Затем в чате UAFPUG мне посоветовал Nicolas Prof пример от Lee Brimelow, пример работал отлично, но был написан на ActionScript 2 и использовал класс ColorMatrix от Quasimondo. Я было уже совсем расстроился, но Татьяна Белая быстренько портнула класс ColorMatrix на ActionScript 3.0 и вместе с ним пример.
Я немного изменил пример, можно полистать, как по мне работает на отлично:

Пример контрастного текста отдельной страницей

Исходники по правой кнопке мыши или в архиве.
Удачи!

Bookmark and Share
  1. 8 Responses to “Контрастный текст на фоне произвольного цвета”

  2. Там же у Марио(Quasimondo) был и на AS3 ColorMatrix http://www.quasimondo.com/archives/000671.php
    Пользуемся, незаменимый класс!
    хотя есть аналоги, вот ColorMatrix от Гранта Скиннера(автора флешовых UI компонентов) http://www.gskinner.com/blog/archives/2007/12/colormatrix_upd.html причем это версия на AS3 появилась на полгода раньше чем у Марио

    By Exey on May 11, 2009

  3. Упс. Если честно то я не сильно хотел вдаваться в подробности алгоритма и поэтому просто не стал искать альтернативы или готовые решения. А Белая решила помочь по быстренькому ).

    By Ilja on May 11, 2009

  4. А можно сервер/канал чата UAFPUG? :)

    By FakeAccounter on May 12, 2009

  5. Вы пробовали использовать BlendMode?

    By Eugene on Jul 7, 2009

  6. В плане? каким образом это сделать?

    By Ilja on Jul 7, 2009

  7. У всякого DisplayObject-а есть свойство blendMode.
    выставляем $do.blendMode = BlendMode.INVERT;
    и радуемся жизни.
    BlendMode.INVERT гораздо универсальнее, т.к. нативно выполняется попиксельная инверсия.

    By Ilya Rumeev on Sep 2, 2009

  8. BlendMode.INVERT не подходит, оно делает “негатив” цвета, если попадаються “средние” цвета (например 0×7f7f7f) то ты ничего не увидешь.

    Тут более мощная магия, теории я уже правда непомню, но она работает. Смотреть нужно в сторону интенсивности и яркости цвета.

    By Ilja on Sep 2, 2009

  9. Мега респект Иллюха тебе и конечно Белой. Отличнейший пример. Спасибо

    By Denis Papazov on Sep 14, 2009

Post a Comment



]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
-->
~~~~~~