JavaScript画布中的HSB颜色填充
我想用HSL颜色填充一些圆,这样我可以更改它们的亮度值。 我是JavaScript编程的新手,在JavaScript中找不到任何关于HSL颜色的东西。 我目前有以下代码:JavaScript画布中的HSB颜色填充,javascript,canvas,html5-canvas,Javascript,Canvas,Html5 Canvas,我想用HSL颜色填充一些圆,这样我可以更改它们的亮度值。 我是JavaScript编程的新手,在JavaScript中找不到任何关于HSL颜色的东西。 我目前有以下代码: context.fillStyle = 'rgb(200, 100, 0)'; 我想基本上找到一个等价于rgb的函数,但是有了HSL,你可以从HSV转换成rgb。 在画布中,您可以使用: 十六进制颜色:ctx.fillStyle=“#0000FF” RGB颜色:ctx.fillStyle=“RGB(0,0255)” RGB
context.fillStyle = 'rgb(200, 100, 0)';
我想基本上找到一个等价于rgb的函数,但是有了HSL,你可以从HSV转换成rgb。 在画布中,您可以使用:
- 十六进制颜色:
ctx.fillStyle=“#0000FF”代码>
- RGB颜色:
ctx.fillStyle=“RGB(0,0255)”
- RGBA颜色:
ctx.fillStyle=“RGBA(0,0255,0.3)”代码>
- HSL颜色:
ctx.fillStyle=“HSL(120100,50)”代码>
- HSLA颜色:
ctx.fillStyle=“HSLA(120100,50,0.3)”代码>
function HSVtoRGB(h, s, v) {
var r, g, b, i, f, p, q, t;
if (arguments.length === 1) {
s = h.s, v = h.v, h = h.h;
}
i = Math.floor(h * 6);
f = h * 6 - i;
p = v * (1 - s);
q = v * (1 - f * s);
t = v * (1 - (1 - f) * s);
switch (i % 6) {
case 0: r = v, g = t, b = p; break;
case 1: r = q, g = v, b = p; break;
case 2: r = p, g = v, b = t; break;
case 3: r = p, g = q, b = v; break;
case 4: r = t, g = p, b = v; break;
case 5: r = v, g = p, b = q; break;
}
return {
r: Math.round(r * 255),
g: Math.round(g * 255),
b: Math.round(b * 255)
};
}
当我做
context.fillStyle='HSL(12010050)'代码>,无论值是多少,我都会得到黑色。@weisbrja试试这个ctx.fillStyle='hsl('+360*Math.random()+',100%,50%)
hsl是这样组成的:hsl(色调、饱和度、亮度、alpha)
色调是色轮上的一个整数0-360,饱和度和亮度是百分比(0-100%),表示每个组件的强度,alpha是一个十进制值0.00-1.00,表示不透明度。我忽略了百分号(%)。谢谢你!您知道HSL和HSB(又名HSV)是不同的颜色型号吗?只要L===100%
时,HSL是白色的,但只有当B==100%
和S==0%
是您询问HSL或HSBI的问题时,HSB才是白色的,但我指的是HSL。