HelpF.pro

Разложение значения Цвета на состовляющие 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
Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/1028.html