我有基色,由基本[R G B]矩阵表示。
我想根据我的常数创建一个较浅或较暗的颜色,基本上是一个角度(0 - 90°)。
我正在寻找一种算法,如何根据该角度创建更亮或更暗的颜色。
较浅颜色的端点为白色,较暗颜色的端点为黑色。
愚蠢的例子:Green -> Lime -> White
Blue -> Navy -> Black
function [result] = GetColor(baseColor, angleValue)
value = round(angleValue);
endcolor = [1 1 1];
r = linspace(basecolor(1,1), endcolor(1,1), 90);
g = linspace(basecolor(1,2), endcolor(1,2), 90);
b = linspace(basecolor(1,3), endcolor(1,3), 90);
result = [r(value) g(value) b(value)];
end
答案 0 :(得分:5)
你想要的颜色最轻/最黑的是什么?定义与0和90对应的结束点[r1 g1 b1]
,[r2 g2 b2]
。然后使用:
colormap = [linspace(r1, r2, 91)' linspace(g1, g2, 91)' linspace(b1, b2, 91)']
定义一组91种颜色,并选择与角度对应的颜色。
答案 1 :(得分:1)
您可以轻松地使用Java,如下所示:
jColor = java.awt.Color(0.12,0.34,0.67); % R,G,B fractions of 255 = [31,87,171]
lightColor = jColor.brighter.getRGBComponents([])'*255; % => [44,124,244,255] (4th component is alpha transparency)
darkColor = jColor.darker.getRGBComponents([])'*255; % => [21,60,119,255]
Java有其他支持函数/类,您可以在Matlab中无缝使用,如上例所示。