Как вычесть цвет из другого - PullRequest
10 голосов
/ 25 января 2012

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

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

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

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 ]

7 голосов
/ 25 января 2012

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

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
6 голосов
/ 25 января 2012

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

Чтобы вычесть цвет, вы должны вычесть каждый компонент цвета и, возможно, позже преобразовать его в шестнадцатеричное.

* Возможно, вы захотите добавить Альфу позже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...