📅  最后修改于: 2023-12-03 14:56:26.562000             🧑  作者: Mango
画布星形是用编程语言,在画布上绘制出美丽的星形的一种技术。可以用于美术、设计、游戏等领域,成为其中极具创意和实用性的技术之一。
在canvas中,我们可以使用如下代码绘制一颗五角星:
function star(ctx, x, y, r, rotate = 0) {
ctx.save();
ctx.beginPath();
ctx.translate(x, y);
ctx.rotate(rotate * Math.PI / 180);
ctx.moveTo(0, -r);
for (var i = 0; i < 5; i++) {
ctx.rotate(Math.PI / 5);
ctx.lineTo(0, -(r * 0.4));
ctx.rotate(Math.PI / 5);
ctx.lineTo(0, -r);
}
ctx.closePath();
ctx.restore();
}
使用上述代码,我们就可以画出一个五角星。其中的参数x,y为五角星的中心坐标,r为它的半径,rotate为它的旋转角度。
在实现星形技术后,我们可以选择进一步拓展其应用,例如:
通过循环调用star函数并随机生成坐标,我们可以实现随机星空的效果:
for (var i = 0; i < 200; i++) {
var x = Math.random() * canvas.width;
var y = Math.random() * canvas.height;
var size = Math.random() * 3;
var opacity = Math.random() * 0.5 + 0.5;
ctx.fillStyle = `rgba(255, 255, 255, ${opacity})`;
star(ctx, x, y, size);
}
我们还可以通过定时器调用函数并慢慢变化星形的大小和透明度,从而实现动态效果。
var size = 0;
var opacity = 0;
function update() {
window.requestAnimationFrame(update);
size += 0.1;
opacity += 0.01;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = `rgba(255, 255, 255, ${opacity})`;
star(ctx, canvas.width / 2, canvas.height / 2, size, size);
}
update();
在上述代码中,我们不断进行动画的更新,每次更新后重新绘制画布。通过改变星形大小和透明度,我们可以实现动态的效果。
画布星形技术可以应用于美术、设计、游戏等领域,拓展了这些领域的创造力和实用性。通过调整参数和加入动画等元素,我们可以得到非常多的有趣效果。