Учитывая значение цвета css, например:
rgba(0, 0, 0, 0.86)
Как мне преобразовать это в шестнадцатеричное значение RGB, которое учитывает альфа-компонент, если на белом фоне?
Учитывая значение цвета css, например:
rgba(0, 0, 0, 0.86)
Как мне преобразовать это в шестнадцатеричное значение RGB, которое учитывает альфа-компонент, если на белом фоне?
Так как значение альфа уменьшает цвет фона и значение цвета, что-то вроде этого может сделать трюк:
function rgba2rgb(RGB_background, RGBA_color)
{
var alpha = RGBA_color.a;
return new Color(
(1 - alpha) * RGB_background.r + alpha * RGBA_color.r,
(1 - alpha) * RGB_background.g + alpha * RGBA_color.g,
(1 - alpha) * RGB_background.b + alpha * RGBA_color.b
);
}
(Попробуйте интерактивно: http://marcodiiga.github.io/rgba-to-rgb-conversion)
Предполагая, что значения равны 0... 1 на канал. Предполагая, что аббревиатура вызова метода/функции в вопросе соответствует аргументам, должно работать следующее.
A = 255 * 0.86
R = 255 * 0
G = 255 * 0
B = 255 * 0
Обратите внимание, что вы можете изменить способ его округления, поскольку это может привести к неточностям цветов.
В этот момент значения на самом деле являются значениями с плавающей запятой, но их использование в байтах или char (в зависимости от языка) должно теоретически работать.
var _A = (byte)219.3
var _R = (byte)0
var _G = (byte)0
var _B = (byte)0
Теперь вам нужно всего лишь преобразовать их в шестнадцатеричную строку и объединить их (ARGB) и поставить симпатичный маленький хэш-тег впереди (#)
В С# вы можете сделать что-то похожее на:
var hexString = string.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", _A, _R, _G, _B);
Удовлетворение конечного результата чего-то вроде:
#DB000000
Значение rgba, которое у вас есть: rgba (0, 0, 0, 0,86)
Первое 0 означает КРАСНЫЙ
Второй 0 означает ЗЕЛЕНЫЙ
Третий 0 означает ГОЛУБОЙ
и последняя цифра 0,86 обозначает альфа/непрозрачность
Вот некоторые ссылки для rgb на hex-конвертер:
http://www.javascripter.net/faq/rgbtohex.htm
http://www.rgbtohex.net/
http://www.yellowpipe.com/yis/tools/hex-to-rgb/color-converter.php
с цифрами 0, 0, 0. Код шестнадцатеричного кода будет
#000000
Ниже приведен код низкой непрозрачности с белым фоном
HTML
<div id="parentDiv">
<div id="childDiv">
</div>
</div>
CSS
#parentDiv
{
height:100px; /* The property of Child is Inherit */
width:100px; /* The property of Child is Inherit*/
background-color:#ffffff;
}
#childDiv
{
height:inherit;
width:inherit;
background-color:#000000;
opacity:0.86;
filter:alpha(opacity="86");
}
Теперь родительский Div - это фон с
#ffffff (White color)
вы можете конвертировать красный, зеленый и синий индивидуально с помощью .toString(16)
, а затем объединить результат в случае, если вы просто хотите преобразовать rgb в hex... поскольку вы ищете для преобразования rgba в hex, я думал, что это было бы лучше преобразовать rgba в rgb, а затем в hex, как я сделал в следующем Fiddle, который также рассмотрит background-color
parent
div
.