helpf.pro
Регистрация
 0 
Распечатать

1С 8.x : Разложение значения Цвета на состовляющие RGB

Периодически могут возникать ситуации, когда необходимо разложить числовое значение цвета на его RGB-составлящие. Например, если говорить о платформе 1С 8, то для задания цвета шрифта, цвета области табличного документа и т.п. мы можем использовать либо web-цвета, либо цвета стилей, либо абсолютный цвет, который задается через RGB-составляющие:
Код 1C v 8.х
 Цвет = Новый Цвет(R,G,B);   

где R,G,B - числовое значение цвета от 0 до 255 (красный, зеленый и синий соответственно)

В тоже время некоторые приложения, например Excel, возвращают значение цвета одним десятичным числом, которое формируется из всех трех составляющих по определенному алгоритму. И если нам необходимо, например, скопировать формат ячейки Excel в ячейку табличного документа 1С, то возникает вопрос, как нам разложить числовое представление цвета на его RGB-составляющие?

Чтобы разобраться в этом вопросе, давайте посмотрим, по какой формуле формируется числовое представление цвета. Формула достаточно проста:
Цвет = R + G * 256 + B * 65535

где R,G,B - числовое значение цвета от 0 до 255 (красный, зеленый и синий соответственно)

Если представить коэффициенты немного в другом виде, то наша формула преобразуется к следующему виду:
Цвет = R*(256^0) + G*(256^1) + B*(256^2)

То есть наше числовое представление цвета есть ни что иное, как трехзначное число по основанию 256. Поэтому, чтобы получить требуемые составляющие, нам надо всего лишь преобразовать значение цвета из 10-тичной системы в систему по основанию 256. Каждое из трех полученных значений и будет искомым значением составляющих цвета.

На примере переноса цвета ячейки Excel код будет вылядеть так:
Код 1C v 8.х
 ЦветRGB = ЯчЕксел.Interior.Color;
R = ЦветRGB%256;
G = (Цел(ЦветRGB/256))%256;
B = (Цел(ЦветRGB/65535))%256;
Яч.ЦветФона = Новый Цвет(R,G,B);


Источник: lessons1c
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 24710
 0 
Распечатать
Возможно, вас также заинтересует
База для Разработки или Рабочая? Как быстро определить? 5
Когда-то я работал консультантом SAP . В SAPe есть настройка изменения цвета главного окна программы и у нас было негласное правило: Рабочая программа - Красный фон , Тестовая - Зеленый , Разработка - Синий . Работая в 1С, всегда открыто по 5-6
Выбор ~ Как открыть пользователю стандартный диалог выбора Цвета или Шрифта? 0
Диалог = Новый ДиалогВыбораЦвета; Если Диалог.Выбрать() Тогда ВыбранныйЦвет = Диалог.Цвет; КонецЕсли; Диалог = Новый ДиалогВыбораШрифта; Если Диалог.Выбрать() Тогда ВыбранныйШрифт = Диалог.Шрифт; КонецЕсли;
Выгрузка / Загрузка данных посредством DBF файлов? 2
DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что формат DBF считае
Выгрузка данных в Excel с установкой разных параметров 9
// Процедура выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel // с указанным именем, используя преобразование данных к типу число и типу строка; Процедура ОсновныеДействияФормыЭкспорт(Кнопка) Попытка
Группировка строк Excel 4
В ниже указанном коде нужно убрать символ _ //Группировка строк по уровню 2 Worksheet.Range(" 7:8" ).Rows.Group(); Worksheet.Range(" 10:11" ).Rows.Group(); Worksheet.Range(" 14:15" ).Rows.Group(); Worksheet.Range(" 17:18" ).Rows.Group(); /
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.