2016-06-02 1 views
1

Я пытаюсь сделать слой тепловой карты на своем участке, и вместо белого цвета вместо фона черный, поэтому данный градиент исчезает до черного. Я хотел бы сохранить одно и то же «направление», чтобы красный был «самым горячим» и т. Д., Но вместо черного, как минимальный цвет, я бы хотел, чтобы он был белым, поэтому он выглядит так, как будто он соответствует моему первоначальному сюжету. Вот моя скрипка: http://jsfiddle.net/davidreed0/2hvLkf35/9/Как изменить градиент этой карты тепла, чтобы фон был белым, а не черным

изменить фон от черного к белому здесь:

defaultColor = this.bgcolor || [0, 0, 0, 0]; 

, но я не могу понять, где градиент фактически вычисляется.

ответ

2

Поиграв немного со своей скрипкой, я думаю, что обнаружил, где вычисляется градиент.

Он использует кодировку HSL для представления цветов. Ключ здесь Светимость. По мере понижения значения светимость также снижается. HSL определяет оттенок и насыщенность тона, где яркость определяет яркость. Светимость 0 будет черной, просто ваш случай.

Так щипая процедура:

HeatCanvas.defaultValue2Color = function(value) { 
    var h = (1 - value); 
    // now we make luminosity inversely proportional 
    var l = 1 - value * 0.6; 
    var s = 0.8; 
    var a = 1; 
    return [h, s, l, a]; 
} 

эффективно выцветает до белого.

Возможно, вам понадобится настроить эти константы (0,6 и 0,8), чтобы получить лучший результат. Взгляните на обновленную скрипку, чтобы узнать, подходит ли она для ваших нужд!

http://jsfiddle.net/2hvLkf35/14/

+0

Да, это сделал трюк. Благодаря! Любая идея о том, как сделать его менее розовым и синим на минимумах? – dreed75

+0

hmm Я не эксперт в нотации HSL, но я уверен, что настройка HUE (H) сделает это. Hue управляет самим цветом, насыщенностью, насколько это (без насыщения = серый, полное насыщение = яркое) и яркостью яркости. – rupps

Смежные вопросы