绘制直线
在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(); ```}