围绕 canvas 中的一个点重画一条线
Redraw a line around a point in a canvas
我遇到了一些问题。我想用围绕特定 canvas 点的多条线填充 canvas。结果应该是右中角的一个圆圈(黄色太阳),周围环绕着一些太阳光束。例如,结果应该看起来有点像旧的日本国旗。我的主要问题是画一条线并多次复制。 :(
你说你的问题是画线复制多次
这听起来像是一个循环画线,它可能是一个实际的 for 循环,或者只是一个 setInterval
或者两者的组合来让它有点动画。
这里有一些想法:
在此,我们从中心直接画线,只是使用了一些三角函数和一些随机性。
const canvas = document.getElementById("c");
canvas.width = canvas.height = 140;
const ctx = canvas.getContext("2d");
ctx.translate(canvas.width / 2, canvas.height / 2)
let r = 20;
let bars = 90;
function draw() {
ctx.clearRect(-100, -100, 200, 200)
for (var i = 0; i < 360; i += (360 / bars)) {
var angle = i * ((Math.PI * 2) / bars);
var x = Math.cos(angle) * r;
var y = Math.sin(angle) * r;
var v = Math.random() + 2;
ctx.beginPath();
ctx.moveTo(x, y);
ctx.lineTo(x * v, y * v)
ctx.stroke();
}
}
setInterval(draw, 100)
<canvas id="c"></canvas>
另一条直线向下,我们稍后旋转 canvas
const canvas = document.getElementById("c");
canvas.width = canvas.height = 140;
const ctx = canvas.getContext("2d");
ctx.translate(canvas.width / 2, canvas.height / 2)
let r = 20;
var i = 0;
function draw() {
ctx.beginPath();
ctx.moveTo(r, -60);
ctx.lineTo(r, 60)
ctx.stroke();
ctx.rotate(0.6)
if (i++ > 20) {
ctx.clearRect(-100, -100, 200, 200)
i = 0
}
}
setInterval(draw, 200)
<canvas id="c"></canvas>
我遇到了一些问题。我想用围绕特定 canvas 点的多条线填充 canvas。结果应该是右中角的一个圆圈(黄色太阳),周围环绕着一些太阳光束。例如,结果应该看起来有点像旧的日本国旗。我的主要问题是画一条线并多次复制。 :(
你说你的问题是画线复制多次
这听起来像是一个循环画线,它可能是一个实际的 for 循环,或者只是一个 setInterval
或者两者的组合来让它有点动画。
这里有一些想法:
在此,我们从中心直接画线,只是使用了一些三角函数和一些随机性。
const canvas = document.getElementById("c"); canvas.width = canvas.height = 140; const ctx = canvas.getContext("2d"); ctx.translate(canvas.width / 2, canvas.height / 2) let r = 20; let bars = 90; function draw() { ctx.clearRect(-100, -100, 200, 200) for (var i = 0; i < 360; i += (360 / bars)) { var angle = i * ((Math.PI * 2) / bars); var x = Math.cos(angle) * r; var y = Math.sin(angle) * r; var v = Math.random() + 2; ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x * v, y * v) ctx.stroke(); } } setInterval(draw, 100)
<canvas id="c"></canvas>
另一条直线向下,我们稍后旋转 canvas
const canvas = document.getElementById("c"); canvas.width = canvas.height = 140; const ctx = canvas.getContext("2d"); ctx.translate(canvas.width / 2, canvas.height / 2) let r = 20; var i = 0; function draw() { ctx.beginPath(); ctx.moveTo(r, -60); ctx.lineTo(r, 60) ctx.stroke(); ctx.rotate(0.6) if (i++ > 20) { ctx.clearRect(-100, -100, 200, 200) i = 0 } } setInterval(draw, 200)
<canvas id="c"></canvas>