Ich versuche, eine Figur auf einer Leinwand zu zeichnen, mit einem regenbogenfarbenen Farbverlauf gefüllt werden. Das gewünschte Ergebnis ist so etwas wie dieses:Komplexe Form mit Regenbogen-Farbverlauf
Erstellen der Form selbst ist recht einfach, nur einen Weg zu schaffen und Zeichnen der Linien. Es ist jedoch etwas schwieriger, sie tatsächlich mit einem Gradienten zu füllen, da nur radiale und lineare Gradienten unterstützt werden.
Die nächstgelegene wir bekommen haben, ist dies:
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>
Die graduellen Farben und so sind korrekt, aber der Gradient sollte natürlich mehr Dreiecksartig sein, anstatt rechteckig ist und abgeschnitten.
Ich weiß nicht sicher, ob es funktioniert, aber ein Gedanke: Sie könnten ein regelmäßiges Rechteck machen, den Gradienten darauf setzen und es dann mit 'transform' skalieren und skalieren: https: //developer.mozilla .org/de-DE/docs/Web/API/Canvas_API/Tutorial/Transformationen # Transformiert – fredrover