JavaScript画布中的HSB颜色填充

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

我想用HSL颜色填充一些圆,这样我可以更改它们的亮度值。 我是JavaScript编程的新手,在JavaScript中找不到任何关于HSL颜色的东西。 我目前有以下代码:

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)”
将hsv转换为rgba的函数如下所示:

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。