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 и вместе с ним пример.
Я немного изменил пример, можно полистать, как по мне работает на отлично:

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

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

  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 не подходит, оно делает “негатив” цвета, если попадаються “средние” цвета (например 0x7f7f7f) то ты ничего не увидешь.

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

    By Ilja on Sep 2, 2009

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

    By Denis Papazov on Sep 14, 2009

Sorry, comments for this entry are closed at this time.



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