Я хочу нарисовать несколько линий с одинаковым градиентом, но в моем коде второй штрих влияет на первую линию.Кто-нибудь знает, как это сделать?Большое спасибо.
function drawOnLoad() {
var canvas = document.getElementById("mycvs");
var str = canvas.getContext("2d")
var str_gradient = str.createLinearGradient(7, 7, 300, 150);
str_gradient.addColorStop(0, "yellow");
str_gradient.addColorStop(0.5, "blue");
str_gradient.addColorStop(1, "red");
str.strokeStyle = str_gradient;
str.lineWidth = "7"
str.beginPath()
str.moveTo(7, 7)
str.lineTo(300, 150)
str.stroke()
var str2 = canvas.getContext("2d");
var str2_gradient = str2.createLinearGradient(300, 150, 400, 250)
str2_gradient.addColorStop(0, "yellow")
str2_gradient.addColorStop(0.5, "blue")
str2_gradient.addColorStop(1, "red")
str2.strokeStyle = str2_gradient
str2.moveTo(300, 150)
str2.lineTo(400, 250)
str2.stroke()
}
<body onload="drawOnLoad()">
<canvas id="mycvs" height="1240" width="1240"></canvas>
</body>
То, как вторая строка влияет на первую, становится более очевидным, если вы задерживаете отрисовку второй строки:
function drawOnLoad() {
var canvas = document.getElementById("mycvs");
var str = canvas.getContext("2d")
var str_gradient = str.createLinearGradient(7, 7, 300, 150);
str_gradient.addColorStop(0, "yellow");
str_gradient.addColorStop(0.5, "blue");
str_gradient.addColorStop(1, "red");
str.strokeStyle = str_gradient;
str.lineWidth = "7"
str.beginPath()
str.moveTo(7, 7)
str.lineTo(300, 150)
str.stroke()
setTimeout(() => {
var str2 = canvas.getContext("2d");
var str2_gradient = str2.createLinearGradient(300, 150, 400, 250)
str2_gradient.addColorStop(0, "yellow")
str2_gradient.addColorStop(0.5, "blue")
str2_gradient.addColorStop(1, "red")
str2.strokeStyle = str2_gradient
str2.moveTo(300, 150)
str2.lineTo(400, 250)
str2.stroke()
}, 800);
}
<body onload="drawOnLoad()">
<canvas id="mycvs" height="1240" width="1240"></canvas>
</body>