Sto provando a disegnare una figura su una tela, da riempire con una sfumatura arcobaleno. Il risultato desiderato è qualcosa di simile:Forma complessa con sfumatura arcobaleno
Creare la forma in sé è abbastanza semplice, basta creare un percorso e disegnare le linee. Tuttavia, in realtà riempirlo con un gradiente sembra essere un po 'più difficile, in quanto sembra supportato solo gradienti radiali e lineari.
Il più vicino ho ottenuto è questo:
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var gradient=ctx.createLinearGradient(0,0,0,100);
gradient.addColorStop (0, 'red');
gradient.addColorStop (0.25, 'yellow');
gradient.addColorStop (0.5, 'green');
gradient.addColorStop (0.75, 'blue');
gradient.addColorStop (1, 'violet');
ctx.moveTo(0,40);
ctx.lineTo(200,0);
ctx.lineTo(200,100);
ctx.lineTo(0, 50);
ctx.closePath();
ctx.fillStyle = gradient;
ctx.fill();
<body onload="draw();">
<canvas id="canvas" width="400" height="300"></canvas>
</body>
I colori di pendenza e sono tali corretto, ma il gradiente dovrebbe ovviamente essere più triangolare simile, piuttosto che essere rettangolare e ritagliata.
Non so per certo se funzionerà, ma un pensiero: puoi creare un rettangolo regolare, posizionare il gradiente e quindi inclinarlo e ridimensionarlo usando 'transform': https: //developer.mozilla .org/it-IT/docs/Web/API/Canvas_API/Tutorial/Trasformazioni # Transforms – fredrover