Как вычесть цвет из другого
можно ли вычесть один цвет из другого ?
пример (поправьте меня, если я ошибаюсь):
Если вычесть красный и зеленое С белый, я жду результат будет синий.
var white = 0xFFFFFF,
red = 0xFF0000,
result = white - red;
console.log(result); //65535 <-- what is that ? can it be converted to 0x00FFFF ?
[обновление]
спасибо ракеты, оказалось, что мне нужен function()
чтобы преобразовать мои результаты в фактические цвет.
вот последний рабочий пример:
var toColor = function ( d ) {
var c = Number(d).toString(16);
return "#" + ( "000000".substr( 0, 6 - c.length ) + c.toUpperCase() );
},
white = 0xFFFFFF,
red = 0xFF0000,
green = 0x00FF00,
result = toColor( white - red - green );
console.log( result ); // logs the expected result: "#0000FF"
2 ответов
код white-red
отлично работает, просто JavaScript представляет значения как базовые 10 значений. Вам нужно преобразовать их обратно в базу 16 (hex). Проверьте ответ, чтобы преобразовать значение обратно в hex.
var white = 0xFFFFFF, // Stored as 16777215
red = 0xFF0000, // Stored as 16711680
result = white - red; // 16777215 - 16711680 = 65535
console.log(result); // It's stored as base 10, so it prints 65535
var resultHex = result.toString(16); // 'ffff', converted back to hex
Я просто предполагаю, что вы используете RGB, потому что есть много других способов смешивания цветов. Вы должны представить цвет в 3 * разных частях, R G и B.
// R G B
var white = [ 1, 1, 1];
var red = [ 0, 0, 0 ];
var result = [ white[0] - red[0], white[1] - red[1], white[2] - red[2] ;
чтобы вычесть цвет вы должны вычесть каждый компонент цвета, и, возможно, преобразовать его обратно в hex позже.
* возможно, вы захотите добавить Alpha позже