30 ноября 2014 г.

Программа для выбора цвета Color Picker на AIR

Когда-то давно я сделал на Flash-е программу для подбора цвета. Потом даже не поленился её переписать с ActionScript 2 на ActionScript 3. И вот, наконец-то, я сделал то, что запланировал еще тогда: собрал эту программу для desktop под AIR. Сделал это по двум причинам: работающая во флеш-плейере она выглядит не эстетично и сборка под AIR добавляет возможностей, которых у Flash Player попросту нет.

И если первый аргумент не видится важным, то второй - концептуален. Теперь программа может выбирать цвет в любом месте экрана. У флешевого варианта такой возможности нет принципиально. Зато среда AIR позволяет использовать любые функции операционной системы через собственный API или, если нужной вам функции в API нет - через "родные" для операционной системы процессы (flash.desktop.NativeProcess). Обмен данными с такими процессами происходит через стандартные потоки ввода-вывода. Это крайне удобно! Но и это не единственный способ. Можно использовать сокеты. Я, конечно, в этом приложении не стал использовать сокеты из-за более высокой сложности реализации, чем через стандартные потоки. Но возможность-то никуда не делась. ;)

Мне видится такое положение вещей весьма выгодным. На Flash/Flex легче чем на C/C++ создавать интерфейсы. А системные функции могут выполнять "родные" процессы.

Теперь немного о "родном" процессе, помогающем выбрать цвет в любом месте экрана. Он реализован на C/C++ с использованием WinAPI. Написал версию только под Винду. Если вдруг программа станет востребованной - можно сделать и для Linux. Я чаще работаю под Windows, поэтому решение соответствующее. Еще, конечно, можно доработать некоторые моменты, но мне для своих нужд пока достаточно.

Кому будет интересна программа - устанавливайте на здоровье:

2 комментария:

alxzaur комментирует...

Добавить под полями ввода флажок "Ввод значений в hex-формате" -- и совсем красота будет! Или вообще переключать значения вместе с результатом (иногда значение цвета нужно именно как rgb(204, 51, 51), а не #c33). А можно ещё и поле прозрачности добавить, для rgba-значений.

Ivan Sergeev комментирует...

Вроде есть способ ввода в hex-формате? А насчет вывода в rgba - буду думать. Мысль хорошая. Спасибо!

Отправить комментарий