Подтвердить что ты не робот

Как вычесть цвет из другого

Можно ли вычесть цвет из другого?

Пример (исправьте меня, если я ошибаюсь):

Если вычесть красный и зеленый из белый, я ожидаю, результат синий.

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"
4b9b3361

Ответ 1

Ваш white-red работает отлично, просто JavaScript представляет значения в качестве базовых значений 10. Вам нужно преобразовать их обратно в базу 16 (шестнадцатеричный). Проверьте этот ответ, чтобы преобразовать значение обратно в hex.

var white = 0xFFFFFF, // Stored as 16777215
    red = 0xFF0000, // Stored as 16711680
    result = white - red; // 16777215 - 16711680 = 65535
console.log(result); // It stored as base 10, so it prints 65535
var resultHex = result.toString(16); // 'ffff', converted back to hex

Ответ 2

Я просто предполагаю, что вы используете 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 позже