我的应用程序需要创建一个颜色板,可以包含从0度到360度的任何颜色色调。我目前使用以下代码来创建这个颜色板。让我们以120度(纯绿色)为例:
我遇到的问题是这不是一个完美的渐变。例如,右上方的颜色为
有没有办法制作一个完美的线性渐变,可供颜色调色板使用?
function drawPalette(hue) {
var ctx = document.querySelector("canvas").getContext("2d");
let w = ctx.canvas.width;
let h = ctx.canvas.height;
var grH = ctx.createLinearGradient(0, 0, w, 0);
grH.addColorStop(0, '#fff');
grH.addColorStop(1, 'hsl(' + hue + ', 100%, 50%)');
ctx.fillStyle = grH;
ctx.fillRect(0, 0, w, h);
var grV = ctx.createLinearGradient(0, 0, 0, h);
grV.addColorStop(0, 'rgba(0,0,0,0)');
grV.addColorStop(1, '#000');
ctx.fillStyle = grV;
ctx.fillRect(0, 0, w, h);
}
drawPalette(120);
<canvas></canvas>
#02FF02
而不是#00FF00
(纯绿色)。您可以使用取色器来自行查看。有没有办法制作一个完美的线性渐变,可供颜色调色板使用?
#02FF02
的?在右上角(最边角)看起来像是纯绿色。 - hashBender