返回

萌翻了的Canvas小黑猫,快来get!

前端

如何使用 Canvas 画出萌萌的猫咪

Canvas 是 HTML5 中的一项强大功能,可让你在网页上绘制精美的图形。让我们用它来绘制一只超萌的小黑猫,看看它有多么简单。

绘制猫咪的身体

首先,创建一个<canvas>元素并获取它的上下文。然后,使用 beginPath() 开始绘制,moveTo() 定义起始点,quadraticCurveTo() 用曲线连接点,closePath() 闭合路径,最后用 fill() 填充颜色,猫咪的身体就出现了!

const canvas = document.getElementById("cat");
const ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.moveTo(100, 100);
ctx.quadraticCurveTo(150, 100, 150, 150);
ctx.quadraticCurveTo(150, 200, 100, 200);
ctx.quadraticCurveTo(50, 200, 50, 150);
ctx.quadraticCurveTo(50, 100, 100, 100);
ctx.closePath();
ctx.fillStyle = "black";
ctx.fill();

绘制猫咪的头部

同样,开始绘制,定义起始点,用曲线连接点,闭合路径,填充颜色,猫咪的头部就跃然纸上!

ctx.beginPath();
ctx.moveTo(125, 75);
ctx.quadraticCurveTo(150, 50, 175, 75);
ctx.quadraticCurveTo(200, 100, 175, 125);
ctx.quadraticCurveTo(150, 150, 125, 125);
ctx.quadraticCurveTo(100, 100, 125, 75);
ctx.closePath();
ctx.fillStyle = "black";
ctx.fill();

绘制猫咪的眼睛

这次使用 arc() 函数绘制圆形,它需要圆心坐标、半径、起始角度和结束角度。

// 左眼
ctx.beginPath();
ctx.arc(115, 85, 5, 0, Math.PI * 2, true);
ctx.fillStyle = "white";
ctx.fill();

// 右眼
ctx.beginPath();
ctx.arc(145, 85, 5, 0, Math.PI * 2, true);
ctx.fillStyle = "white";
ctx.fill();

绘制猫咪的鼻子

moveTo()lineTo() 绘制三角形,然后用 stroke() 给它描边。

ctx.beginPath();
ctx.moveTo(130, 105);
ctx.lineTo(135, 115);
ctx.lineTo(140, 105);
ctx.closePath();
ctx.strokeStyle = "black";
ctx.stroke();

绘制猫咪的嘴巴

与鼻子类似,用 moveTo()lineTo() 绘制曲线,并用 stroke() 描边。

ctx.beginPath();
ctx.moveTo(135, 120);
ctx.lineTo(140, 125);
ctx.lineTo(145, 120);
ctx.stroke();

绘制猫咪的胡须

moveTo()lineTo() 绘制几条线段,并用 stroke() 描边。

ctx.beginPath();
ctx.moveTo(115, 85);
ctx.lineTo(95, 70);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(145, 85);
ctx.lineTo(165, 70);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(125, 75);
ctx.lineTo(105, 50);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(135, 75);
ctx.lineTo(155, 50);
ctx.stroke();

小技巧

  • 用不同的颜色填充和描边
  • 调整线宽以改变线条粗细
  • 添加阴影和滤镜以增强视觉效果

结语

现在,你已经掌握了用 Canvas 绘制萌萌的猫咪!Canvas 是一款功能强大的工具,可以让你尽情发挥创意。从简单的线条到复杂的图形,Canvas 都能帮你实现。

常见问题解答

  1. 如何更改猫咪的颜色?
    • 更改 fillStylestrokeStyle 属性的值。
  2. 如何让猫咪移动?
    • 使用 translate() 函数移动整个画布。
  3. 如何保存猫咪图像?
    • 使用 toDataURL() 函数导出图像并将其保存为文件。
  4. 如何创建动画猫咪?
    • 使用 requestAnimationFrame() 函数不断更新画布并更改猫咪的位置。
  5. 如何让猫咪交互?
    • 使用事件监听器来响应鼠标或键盘事件,并相应地更新猫咪的位置或行为。