![]() |
выбор цвета [colorPicker]
Вложений: 1
Допустим есть пара объектов, разных по цвету. При нажатии на которые цветовая схема должна передаваться в колорпикер т.е. по сути, смещать элементы управления пикером. В принципе, это своего рода, инструмент пипетка.
Код AS3:
Может есть какие мысли или можете посоветовать нечто похожее. |
Так и не понял, в чем вопрос.
"Как брать цвет с объектов вне колорпикера" ? — делать снимок root в битмапдату и брать из нее пиксель; "Как поставить маркеры колорпикера и задать базовый цвет квадрата для полученного извне значения" ? — пересчитать HSV "обратно". // у Вас как то сложно все сделано, куча битмапдат, попиксельное заполнение — зачем? Делаете квадрат базового цвета (из спектрумбара, Н), поверх него квадрат с градиентом белого от прозрачного до непрозрачного, и третий квадрат с градиентом черного. Теперь все, что нужно — менять цвет базового квадрата дравРектом. Все на векторных шейпах, никаких битмап. Цвет РАССЧИТЫВАЕТЕ (a не берете пиксель с квадрата!) из координат маркера внутри квадрата и координаты Y маркера в спектрумбаре. Добавлено через 5 минут Да, Вам понадобится класс для пересчета HSV Код AS3:
|
Вложений: 2
То что вы обозначили вторым вопросом, именно в этом проблема. Задать базовый цвет не проблема, а вот расставить маркеры на нужные координаты, это большая проблема.
Переделал, но по моему, это те же грабли, только с боку, потому что без getPixel совсем не получается. Мне в любом случае, чтобы получить цвет у спектрумбара, приходится преобразовывать его в битмапу и использовать гетпиксел по координатам маркера. Пока совсем не догоняю, как передав, грубо говоря цвет 0xFF0000, расставить маркеры по местам.. Сохранил в ФД на всякий Вложение 32146 |
HSV состоит из Оттенка (Hue) — спектрального круга, соотв. измеряется в градусах и имеет 360 градаций, а также Насыщенности и Яркости, которые измеряются в % и имеют по 100 градаций.
Спектрумбар удобно рисовать 360 пикселей высотой и тогда координата маркера будет прямо коррелировать со значением Hue. Спектр здесь — как бы развернутый в линию круг. Брать с него пиксель имеет смысл только в том случае, если Вы действительно закрашивали его точными цветами и все 360 там представлены. Все это рисование требует ресурсов и времени. Гораздо проще кинуть векторный градиент. Код AS3:
Итак, координата маркера на спектрумбаре это Hue; соответственно, когда Вы получили извне какой-то цвет в RGB, переводите его в HSV. Н будет координатой маркера на спектрумбаре. Ставите туда маркер и вызываете функцию, которая вычисляет базовый цвет из координаты маркера/Н (у Вас в любом случае такая должна быть, чтобы менять базу когда юзер двигает руками маркер). У меня это выглядит примерно так: Код AS3:
Добавлено через 4 минуты Ну а маркер на большом поле ставится по координатам S и V, которые Вы получаете все там же, переведя RGB в HSV. Они в процентах; соотв. Вам надо передвинуть маркер на данный процент от высоты и ширины поля. Удачи)) |
оо Крутяк! Наконец-то до меня дошло. Спасибо)
|
| Часовой пояс GMT +4, время: 09:53. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.