HTML5怎么使用Canvas绘图

来源:站长平台作者:本地能跑头衔:程序员
导读:本期聚焦于小伙伴创作的《HTML5怎么使用Canvas绘图》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《HTML5怎么使用Canvas绘图》有用,将其分享出去将是对创作者最好的鼓励。

HTML5的Canvas元素为网页提供了原生的绘图能力,开发者可以通过JavaScript操作Canvas的绘图上下文,在页面上实现各种自定义图形、动画以及图像处理效果,不需要依赖任何第三方插件。

HTML5怎么使用Canvas绘图

Canvas基础准备

要使用Canvas绘图,首先需要在HTML页面中创建<canvas>标签,同时建议给标签设置明确的宽度和高度属性,避免后续绘图出现尺寸异常的问题。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Canvas绘图示例</title>
</head>
<body>
    <!-- 创建Canvas标签,设置宽高 -->
    <canvas id="myCanvas" width="500" height="300">
        您的浏览器不支持Canvas标签,请升级浏览器版本
    </canvas>
</body>
</html>

需要注意,<canvas>标签内部的文本只会在浏览器不支持Canvas时显示,支持的浏览器会忽略这段内容。接下来需要获取Canvas的绘图上下文,所有的绘图操作都要通过上下文对象完成。

获取绘图上下文

Canvas支持2D和3D两种绘图上下文,日常开发中2D绘图的使用频率更高,获取2D上下文的代码如下:

// 获取Canvas元素
const canvas = document.getElementById('myCanvas');
// 获取2D绘图上下文
const ctx = canvas.getContext('2d');
// 判断浏览器是否支持Canvas
if (!ctx) {
    console.log('当前浏览器不支持Canvas绘图');
}

基础图形绘制

绘制矩形

Canvas提供了三种矩形绘制方法,分别是填充矩形、描边矩形和清除矩形区域。

  • fillRect(x, y, width, height):绘制填充矩形,x和y是矩形左上角坐标,width和height是矩形的宽高
  • strokeRect(x, y, width, height):绘制描边矩形,仅绘制矩形的边框
  • clearRect(x, y, width, height):清除指定矩形区域的内容,相当于擦除操作
// 设置填充颜色为蓝色
ctx.fillStyle = 'blue';
// 绘制蓝色填充矩形,左上角坐标(10,10),宽100,高80
ctx.fillRect(10, 10, 100, 80);

// 设置描边颜色为红色,线宽为3
ctx.strokeStyle = 'red';
ctx.lineWidth = 3;
// 绘制红色描边矩形,左上角坐标(120,10),宽100,高80
ctx.strokeRect(120, 10, 100, 80);

// 清除坐标(30,30)开始,宽50,高40的区域内容
ctx.clearRect(30, 30, 50, 40);

绘制路径图形

除了矩形,其他图形都需要通过路径的方式绘制,基本流程是:开始路径、绘制路径、闭合路径、填充或描边。

绘制圆形的示例代码如下,使用arc方法可以绘制圆弧和圆形:

// 开始新路径
ctx.beginPath();
// 绘制圆形:圆心(250,50),半径40,起始角度0,结束角度2*Math.PI,顺时针绘制
ctx.arc(250, 50, 40, 0, 2 * Math.PI, false);
// 设置填充颜色为绿色
ctx.fillStyle = 'green';
// 填充圆形
ctx.fill();
// 闭合路径
ctx.closePath();

// 绘制空心圆形
ctx.beginPath();
ctx.arc(250, 150, 40, 0, 2 * Math.PI, false);
ctx.strokeStyle = 'orange';
ctx.lineWidth = 2;
ctx.stroke();
ctx.closePath();

绘制线条和多边形

使用moveTolineTo方法可以绘制自定义线条和多边形,moveTo用于移动画笔到指定坐标,lineTo用于绘制从当前坐标到目标坐标的线条。

// 绘制三角形
ctx.beginPath();
// 移动画笔到三角形第一个顶点(50,200)
ctx.moveTo(50, 200);
// 绘制到第二个顶点(100,280)
ctx.lineTo(100, 280);
// 绘制到第三个顶点(0,280)
ctx.lineTo(0, 280);
// 闭合路径,自动连接最后一个点和第一个点
ctx.closePath();
// 填充三角形
ctx.fillStyle = 'purple';
ctx.fill();

绘制文字和图像

绘制文字

Canvas提供了fillTextstrokeText两种方法绘制文字,分别对应填充文字和描边文字,同时可以通过font属性设置文字的样式。

// 设置文字样式:粗体 20px 微软雅黑
ctx.font = 'bold 20px 微软雅黑';
// 设置填充文字颜色
ctx.fillStyle = '#333';
// 绘制填充文字,起始坐标(200,200)
ctx.fillText('Canvas绘图示例', 200, 200);

// 绘制描边文字
ctx.strokeStyle = '#666';
ctx.lineWidth = 1;
ctx.strokeText('描边文字测试', 200, 240);

绘制图像

绘制图像需要先加载图像资源,然后在图像加载完成后调用drawImage方法绘制,该方法支持多种参数形式,可以绘制完整图像也可以绘制图像的指定区域。

// 创建图像对象
const img = new Image();
// 设置图像地址,如果是示例地址需替换成ipipp.com
img.src = 'https://ipipp.com/example.jpg';
// 图像加载完成后绘制
img.onload = function() {
    // 绘制完整图像,起始坐标(300,220),宽100,高60
    ctx.drawImage(img, 300, 220, 100, 60);
};

常用绘图状态设置

除了基础的图形绘制,Canvas还支持设置阴影、渐变、透明度等绘图状态,提升绘图效果。

属性说明示例值
globalAlpha设置全局透明度,取值范围0到1ctx.globalAlpha = 0.5
shadowColor设置阴影颜色ctx.shadowColor = 'rgba(0,0,0,0.3)'
shadowBlur设置阴影模糊程度ctx.shadowBlur = 10
createLinearGradient创建线性渐变ctx.createLinearGradient(0,0,100,0)
注意:Canvas的绘图状态是累积的,如果需要恢复之前的状态,可以使用save()方法保存状态,restore()方法恢复状态,避免样式互相影响。

HTML5Canvas绘图JavaScript修改时间:2026-06-13 21:36:46

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。