2015-07-29 5 views
0

У меня есть DataGrid, где я использую цветовую тему для установки row hilite color:Зажигалка цвета в DataGrid чередуется строки цвета

set the dgprop["hilite color"] of group "dg_xxx" to color1 -- #dc8400 

Теперь я хотел бы иметь alternate row color на основе color1, но с более легкой нотой (Т.Е. 30% освещенности - #FFD14D).

Есть ли способ сделать что-то вроде следующего с расчетами RGB или HEX, чтобы он динамически менялся при изменении color1?

set the dgprop["alternate row color"] of group "dg_xxx" to (color1 - 30%) 

ответ

0

Следующая функция возвращает оттенок, который рассчитывается путем добавления доли s оставшегося расстояния до белого. Предупреждение 1: в основном вы увеличиваете яркость с помощью этой функции, и вы можете получить уродливый тип серого и в конечном итоге белый. Предупреждение 2: s и -s не дают точно обратных результатов.

function rgbShade 
    if the paramCount is 4 then 
    put param(1) into r 
    put param(2) into g 
    put param(3) into b 
    put param(4) into s 
    else 
    put item 1 of param(1) into r 
    put item 2 of param(1) into g 
    put item 3 of param(1) into b 
    put param(2) into s 
    end if 
    put r+(255-r)*s into r 
    put g+(255-g)*s into g 
    put b+(255-b)*s into b 
    return r,g,b 
end rgbShade 

Использование:

get rgbShade("123,45,67",0.2) // increase of 20% of remaining distance 
put rgbShade(123,45,67,0.2) into myShade // same as above 

Пример:

set the dgprop["hilite color"] of group "dg_xxx" to color1 -- #dc8400 
set the dgprop["alternate row color"] of group "dg_xxx" to rgbShade(color1,.3) 
+1

Спасибо Марку. Легче, чем я думал :-) – Tate83

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