Преобразование web-цвета, цвета стиля и windows-цвета в RGB и наоборот. Получение массива стандартных цветов.

Публикация № 1278131

Разработка - Инструментарий разработчика

цвет абсолютный rgb web стиля элемент windows получить извлечь преобразовать

Обработка, демонстрирующая преобразование цвета любого вида в абсолютный цвет и наоборот, а так же способ извлечения цветов из стандартных коллекций (WebЦвета, ЦветаСтиля и WindowsЦвета).

Протестировано на пустой БД с версией платформы 1С 8.3.17.1549.
Предназначено для использования в любой базе данных 1С.

Возможности:

Преобразование цвета любого вида в цвет любого другого вида при помощи следующих методов:

  • ОпределитьАбсолютныйЦвет(Цвет) - преобразует переданный цвет любого вида в абсолютный цвет;
  • НайтиWebЦвет(Цвет) - ищет переданный цвет любого вида среди набора WebЦвета;
  • НайтиЦветСтиля(Цвет) - ищет переданный цвет любого вида среди набора ЦветаСтиля;
  • НайтиWindowsЦвет(Цвет) - ищет переданный цвет любого вида среди набора WindowsЦвета.

Получение массива Web-цветов, Цветов стиля или Windows-цветов без использования макетов или заранее предопределённых списков соответствующими методами:

  • ПолучитьWebЦвета()
  • ПолучитьЦветаСтиля()
  • ПолучитьWindowsЦвета()

Описание:

Основной принцип преобразования цветов из одного вида в другой в данной обработке заключается в использовании методов ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр().

Так, например, внутренние значения цветов WebЦвета.Белый и WebЦвета.Черный соответственно выглядят следующим образом:

    {"#",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{143}}} 
    {"#",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{8}}}

Как видно, в структуре полученных данных содержится внутренний индекс цвета: 143 - для белого цвета, и 8 - для чёрного цвета. Опытным путём было обнаружено, что для каждой коллекции существует свой диапазон внутренних индексов:

  • WebЦвета: от 1 до 146
  • ЦветаСтиля: от -1 до -47 (значения цветов для некоторых индексов оказались пустыми)
  • WindowsЦвета: от -2 до 28 (кроме 25)

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

Например, внутренний индекс жёлтого цвета для набора WebЦвета равен 145, следовательно внутренняя строка имеет вид:

    ВнутренняяСтрока = "{""#"",9cd510c7-abfc-11d4-9434-004095e12fc7,2,{3,2,{" + 145 + "}}}";

Теперь, чтобы получить цвет набора WebЦвета необходимо воспользоваться методом ЗначениеИзСтрокиВнутр():

    ЖелтыйЦвет = ЗначениеИзСтрокиВнутр(ВнутренняяСтрока);

В результате в переменной "ЖелтыйЦвет" будет содержаться значение WebЦвета.Желтый. Аналогичным образом получаются цвета для других наборов (ЦветаСтиля и WindowsЦвета).

Скачать файлы

Наименование Файл Версия Размер
ПреобразованиеЦветов

.epf 15,39Kb
0
.epf 1.0 15,39Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Diversus 2129 04.12.20 15:29 Сейчас в теме
2. tbkvpvl 15 04.12.20 18:24 Сейчас в теме
(1) Простите, но вы плохо ознакомились с моей обработкой. Я не храню каталог цветов (как это происходит не только в вашей, но и во всех прочих подобных обработках), я их генерирую на основании индексов. Приложил картинку с примером такой генерации. Кроме того, обратите внимание на то, как я получаю абсолютный цвет, это значительно проще используемого в вашей обработке способа. Но в любом случае спасибо за ссылку на вашу обработку, я с ней ознакомился.
Оставьте свое сообщение