HTML5 Canvas绘图,如何通过基础实例代码掌握图形绘制技巧?

avatar
作者
猴君
阅读量:0
HTML5 Canvas基础绘图实例代码集合包括绘制矩形、圆形等基本图形,以及实现动画效果的示例。

绘制直线

HTML5 Canvas绘图,如何通过基础实例代码掌握图形绘制技巧?

在HTML5中,使用Canvas API的beginPath(),moveTo(x, y)lineTo(x, y) 方法可以绘制直线,以下是一个示例代码:

 const canvas = document.getElementById('myCanvas'); const ctx = canvas.getContext('2d'); // 开始路径 ctx.beginPath(); // 移动到起点 (100, 50) ctx.moveTo(100, 50); // 绘制直线到终点 (300, 100) ctx.lineTo(300, 100); // 描边路径 ctx.stroke();

绘制矩形

使用fillRect(x, y, width, height)strokeRect(x, y, width, height) 方法可以分别绘制填充矩形和边框矩形,以下是示例代码:

 // 填充矩形 ctx.fillRect(50, 50, 150, 100); // 边框矩形 ctx.strokeRect(200, 50, 150, 100);

绘制圆形与弧线

使用arc(x, y, radius, startAngle, endAngle, anticlockwise) 方法可以绘制圆弧或部分圆,以下是示例代码:

 // 完整圆 ctx.beginPath(); ctx.arc(250, 150, 50, 0, Math.PI * 2); // 0到2π代表整个圆 ctx.fill(); // 圆弧 ctx.beginPath(); ctx.arc(400, 150, 50, 0, Math.PI, true); // 绘制半圆,逆时针方向 ctx.stroke();

绘制路径

使用quadraticCurveTo(cpX, cpY, x, y)bezierCurveTo(cp1X, cp1Y, cp2X, cp2Y, x, y) 方法可以分别绘制二次贝塞尔曲线和三次贝塞尔曲线,以下是示例代码:

 // 二次贝塞尔曲线 ctx.beginPath(); ctx.moveTo(100, 200); ctx.quadraticCurveTo(200, 250, 250, 250); ctx.stroke(); // 三次贝塞尔曲线 ctx.beginPath(); ctx.moveTo(400, 200); ctx.bezierCurveTo(400, 100, 500, 100, 500, 200); ctx.stroke();

绘制与填充文本

使用fillText(text, x, y [, maxWidth])strokeText(text, x, y [, maxWidth]) 方法可以在指定位置绘制填充文本和文本轮廓,以下是示例代码:

 // 设置字体样式和对齐方式 ctx.font = '36px sansserif'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; // 绘制填充文本 ctx.fillText('Hello, Canvas!', canvas.width / 2, canvas.height / 2);

常见问题解答(FAQs)

{: # 绘制直线的起始点和结束点坐标如何确定?

在HTML5 Canvas中,通过moveTo(x, y)方法设置直线的起点坐标,然后通过lineTo(x, y)方法设置直线的终点坐标。moveTo(100, 50)将起点设为(100, 50),而lineTo(300, 100)则将终点设为(300, 100)。}

{: # 如何在Canvas上绘制渐变线条?

在Canvas中,可以使用createLinearGradient()createRadialGradient()方法创建线性渐变或径向渐变,首先定义渐变的起点、终点和颜色stops,然后将渐变应用到strokeStyle属性上。

 var gradient = ctx.createLinearGradient(0, 0, 200, 0); gradient.addColorStop(0, 'red'); gradient.addColorStop(1, 'blue'); ctx.strokeStyle = gradient; ctx.beginPath(); ctx.moveTo(10, 10); ctx.lineTo(210, 10); ctx.stroke(); ```}

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!