Конвертирование цвета
Есть база данных sql . которая хранит цвет в формате int например 15620996 после конверта, даже с помощью калькулятора для меня это розовый цвет...
чтобы использовать данное число, как цвет, конвертирую его различными способами
вот тут нашла функцию
DECLARE @digit char(1)
SET @seq = '0123456789ABCDEF'
SET @result = SUBSTRING(@seq, (@value%16)+1, 1)
WHILE @value > 0
BEGIN
SET @digit = SUBSTRING(@seq, ((@value/16)%16)+1, 1)
SET @value = @value/16
IF @value <> 0 SET @result = @digit + @result
END
RETURN @result
END
GO
SELECT dbo.ToHex(15620996) ---> EE5B84 => что равно розовый
вот так тоже в самой процедуре
,(SELECT '#' + FORMAT(MyColorFromDB, 'X') FROM MyTable WHERE someCondition) AS ColorTaskHex
это мне возвращает розовый цвет, но дело в том, что это фиолетовый в программе, которая берет из базы данных этот цвет, программа написана на WinDev, и когда я взяла picker и маркером выделила цвет в самой программе, мне это выдало rgb(132, 91, 238) => 84, 5B, EE, потом я ввела в WinDev rvb(132,91,238) и получила 15620996, то есть выходит сохранение данных верно, и мы сохраняем Фиолетовый, но как из этого int (полученного из rvb(?)) получить обратно нормальный цвет в формате hex или rgb ?
Я почитала в самой документации , но что то не пойму как создать 'обратный' алгоритм.
Метку WinDev не нашла, и возможно мало кто с этим работал, но может есть идеи куда копать ?
я вот вижу 84, 5B, EE (фиолетовый из программы) и EE5B84 (розовый, который я получаю из int путем конвертирования) как будто он меняет первое и последнее значение ? или совпадение...
Переводите число 15620996 в шестнадцатиричную форму, получаете 0xEE5B84. Вот вам ваши (84, 5B, EE), можете доставать любым удобным способом.
Вот так можно получить все три RGB-компоненты:
r = a // 256 // 256 # 238 g = (a // 256 ) % 256 # 91 b = a % 256 # 132
// - целочисленное деление, % - остаток от деления.