HTML5 Canvas学习笔记

简介

HTML5 Canvas 是一种用于在网页上绘制图形的标准。该技术使得开发者可以使用 JavaScript 绘制图形、动画、游戏等各种互动效果,而无需依赖其他插件。

HTML5 Canvas 中,我们可以通过 JavaScript 操作 2D 或 3D 图形上下文,绘制直线、圆形、文本等各种图形,并且可以对其进行变换、动画等操作。下面将介绍一些常见的绘图方式以及示例代码。

常见绘图方式

绘制直线

HTML5 Canvas 中,可以通过以下代码绘制一条简单的直线:

javascriptCopy Code
const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') ctx.beginPath() ctx.moveTo(0, 0) ctx.lineTo(200, 200) ctx.stroke()

上述代码中,首先获取了一个 canvas 元素,并获取了该元素的 2D 上下文 ctx。接着使用 beginPath 方法开始一个路径,使用 moveTo 方法设置起点坐标,使用 lineTo 方法设置终点坐标,最后使用 stroke 方法渲染路径并绘制出直线。

绘制圆形

HTML5 Canvas 中,可以通过以下代码绘制一个简单的圆形:

javascriptCopy Code
const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') ctx.beginPath() ctx.arc(100, 100, 50, 0, 2 * Math.PI) ctx.stroke()

上述代码中,同样是获取 canvas 元素和 2D 上下文 ctx。接着使用 beginPath 方法开始一个路径,使用 arc 方法绘制圆形,其中第一个参数为圆心的 x 坐标,第二个参数为圆心的 y 坐标,第三个参数为圆的半径,第四个参数为起始角度,第五个参数为终止角度,最后使用 stroke 方法渲染路径并绘制出圆形。

绘制文本

HTML5 Canvas 中,可以通过以下代码绘制一段简单的文本:

javascriptCopy Code
const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') ctx.font = '30px Arial' ctx.strokeText('Hello World', 50, 50)

上述代码中,同样是获取 canvas 元素和 2D 上下文 ctx。接着使用 font 属性设置文本的字体大小和字体类型,使用 strokeText 方法绘制文本,其中第一个参数为要绘制的文本,第二个参数为文本的 x 坐标,第三个参数为文本的 y 坐标,最后使用 stroke 方法渲染路径并绘制出文本。

示例代码

以下是一个简单的 HTML5 Canvas 示例代码,实现了一个简单的动画效果:

htmlCopy Code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Canvas Demo</title> <style> canvas { border: 1px solid black; } </style> </head> <body> <canvas id="canvas" width="400" height="400"></canvas> <script> const canvas = document.getElementById('canvas') const ctx = canvas.getContext('2d') let x = 0 let y = 0 let dx = 5 let dy = 5 function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height) ctx.beginPath() ctx.arc(x, y, 50, 0, 2 * Math.PI) ctx.stroke() x += dx y += dy if (x < 50 || x > canvas.width - 50) { dx = -dx } if (y < 50 || y > canvas.height - 50) { dy = -dy } requestAnimationFrame(draw) } draw() </script> </body> </html>

上述代码中,使用 canvas 元素创建了一个宽高均为 400 像素的画布,并获取了该元素的 2D 上下文。接着定义了一些变量来控制圆形的位置和运动方向,并在 draw 函数中不断更新圆形的位置并重新绘制出来,同时判断边界条件来改变圆形的运动方向。最后使用 requestAnimationFrame 方法实现了一个简单的动画效果。