Для начала пара слов о цветовых моделях RGB и HSV. Цветовая модель — способ описания цвета набором чисел. Для RGB это всем привычные Красный, Зеленый, Синий — спектральные цвета, на которые раскладывается белый свет (цвет). HSV это Hue — тон, оттенок (красный, желтый, зеленый и т.п.), Saturation — насыщенность (мера "чистоты цвета", насколько он далек от серого) и Value — значение, яркость (насколько цвет ярче/тусклее). HSV не надо путать с HSL, в последнем L — Lightness — светлота (светлый/темный). RGB удобен, когда нам надо получить заданный цвет из компонент - источников света, поэтому ЭЛТ и ЖК экраны, телевизионный и видео сигнал использует именно эту модель. Но RGB плохо подходит для художников и дизайнеров, им часто требуется "сделать цвет поярче", "подобрать цвета градиента", "выбрать дополнительные цвета" и т.п. Для них HSV гораздо удобнее.
Предлагаемая обработка позволяет подобрать цвет несколькими способами:
1) Ввод компонентов цвета. Вводить можно любой компонент обоих цветовых моделей. При вводе значения компонента одной модели происходит автоматический пересчет компонентов другой.
2) Ввод цвет строкой RGB — в формате 1С или web-формате (шестнадцатеричном).
Разумеется, эти значения автоматически пересчитываются, и могут быть скопированы в код модуля.
3) Выбор цвета по шкале - R, G, B или H, SV
На шкале каждого компонента (кроме H-оттенка) мы видим цвета, которые получатся при изменении этого компонента и неизменных других. Т.е. на указанном примере в шкале R мы видим цвета от (0, 203, 219) до (255, 203 219).
И, наконец, 4) Выбор одного из стандартных цветов - WebЦвет, цвет стиля, цвет элемента стиля, заданного в конфигурации. Выбор производится двойным кликом на нужный цвет в списке.
Для преобразования такого цвета в абсолютный, т.е. RGB, использовался рецепт из комментария к статье Универсальные функции для работы с цветом в 1С. К сожалению этот подход не работает со значениями WindowsЦвета, но к счастью это требуется крайне редко.
Как будет выглядеть выбранный цвет, можно сразу увидеть в области примера:
Можно подбирать цвета фона, текста и рамки.
Для упрощения и ускорения работы, неиспользуемые панели отключаются:
В минимальном варианте форма выглядит так:
В максимальном вот так:
Пример использования:
&НаКлиенте
Процедура Подобрать(Команда)
ДопПараметры = Новый Структура("ИмяРеквизита","Цвет");
Оповещение = Новый ОписаниеОповещения("Оповещение", ЭтотОбъект, ДопПараметры);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Цвет", Цвет);
ОткрытьФорму(ИмяФормыПодбораЦвета, ПараметрыФормы, ЭтотОбъект,,,,Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Оповещение(Результат, ДопПараметры)Экспорт
Если ТипЗнч(Результат) = Тип("Структура") Тогда
ЭтотОбъект[ДопПараметры.ИмяРеквизита] = Результат.Цвет;
КонецЕсли;
КонецПроцедуры
При открытии формы можно указать параметр Цвет. Допустимо указывать либо значение типа Цвет, либо строку - в 1С- или web-формате, либо число. После выбора цвета возвращается Структура("Цвет, ЦветСтрока16, ЦветСтрока").
В следующих версиях планируется добавить:
- историю выбора
- выбор нескольких цветов
- определение дополнительных цветов, триад и тетрад, градиента
- использование типовых палитр
Обработка тестировалась на платформе 1С:Предприятие 8.3 (8.3.21.1393) в тонком клиенте.
На этом всё. Как всегда, приветствуются замечания / дополнения / комментарии.