Canvas是HTML5中的一个元素,它提供了一个可以使用JavaScript绘制图形的区域。它提供了一个强大的绘图API,可以用于创建各种图形,包括线条、矩形、圆形、文本等
标签只有两个属性——
width
和height
,当没有设置宽度和高度的时候,会初始化宽度为
300px
和高度为150px
。需要注意的是, 通过 CSS 也可以定义 canvas 的尺寸,但此元素尺寸非彼画布尺寸,在绘制时图像会伸缩以适应它的画布尺寸;如果元素尺寸和画布尺寸比例不一样,绘制出来的图像是扭曲的。
只有同时通过 CSS 指定了
width
和height
,才会出现比例不一致,如果只定义width: 400px
,你会发现高度会自动变成200px
。
标签来创建一个 Canvas 元素。在HTML中,可以使用标签来创建一个Canvas元素。例如:
<canvas id="myCanvas" width="500" height="300"></canvas>
上面的代码创建了一个宽度为500像素,高度为300像素的Canvas元素,并指定了一个id为"myCanvas"。
- 获取Canvas元素:可以使用JavaScript的
querySelector
方法或者直接通过ID获取Canvas元素,并将其存储在一个变量中,方便后续操作。
var canvas = document.querySelector('#canvas');
canvas 起初是空白的,脚本首先需要找到渲染上下文,然后在它的上面绘制。Canvas元素需要一个上下文对象来进行绘制操作。在JavaScript中,可以使用getContext()
方法来获取Canvas的上下文。上下文对象提供了一系列的绘图方法,可以用来绘制图形。例如:
- var canvas = document.getElementById("myCanvas");
- var ctx = canvas.getContext("2d");
上面的代码获取了id为"myCanvas"的Canvas元素,并通过getContext("2d")
方法获取了一个2D上下文对象。
使用Canvas的上下文对象,可以绘制各种形状,如矩形、圆形、线条等。
fillRect()
、strokeRect()
、fillText()
等,可以绘制矩形、文本等基本图形。beginPath()
、moveTo()
、lineTo()
、closePath()
等,可以绘制路径。以下是一些常用的绘制方法:
fillRect(x, y, width, height)
:绘制填充的矩形。strokeRect(x, y, width, height)
:绘制边框的矩形。clearRect(x, y, width, height)
:清除指定矩形区域内的内容。beginPath()
:开始一个新的路径。moveTo(x, y)
:将绘图游标移动到指定的坐标。lineTo(x, y)
:绘制一条直线到指定的坐标。arc(x, y, radius, startAngle, endAngle, anticlockwise)
:绘制一段圆弧。fill()
:填充当前路径。stroke()
:绘制当前路径的边框。
- // 绘制直线
- ctx.beginPath();
- ctx.moveTo(50, 50);
- ctx.lineTo(200, 50);
- ctx.stroke();
-
- // 绘制矩形
- ctx.fillRect(50, 50, 150, 100);
-
- // 绘制圆形
- ctx.beginPath();
- ctx.arc(150, 150, 50, 0, 2 * Math.PI);
- ctx.fill();
使用Canvas的上下文对象,还可以绘制文本。canvas提供了一些方法来绘制文本,包括设置字体、字号和文本内容等以下是一些常用的绘制文本的方法:
font = "size font"
:设置文本的字体大小和字体样式。fillText(text, x, y)
:绘制填充的文本。strokeText(text, x, y)
:绘制文本边框。measureText(text)
:返回一个包含文本宽度的对象。
Canvas提供了一些方法来设置绘制的样式和颜色,如线条的宽度(lineWidth)、填充色(fillStyle)和边框色(strokeStyle)等。
- // 设置线条宽度和颜色
- ctx.lineWidth = 2;
- ctx.strokeStyle = '#000000';
-
- // 设置填充色
- ctx.fillStyle = '#FF0000';
使用Canvas的上下文对象,可以绘制图像。
drawImage()
,可以绘制图像。以下是一些常用的绘制图像的方法:
drawImage(image, x, y)
:绘制图像。getImageData(x, y, width, height)
:获取指定区域的图像数据。
使用Canvas,可以创建动画效果。常用的方法是使用requestAnimationFrame()
函数来循环调用绘制代码,以实现动画效果。
requestAnimationFrame()
方法来循环调用绘制函数,实现平滑的动画效果。例如:
- function draw() {
- // 绘制代码
- requestAnimationFrame(draw);
- }
- draw();
上面的代码定义了一个draw()
函数,该函数会不断地被调用,从而实现动画效果。
ctx.clearRect(0, 0, canvas.width, canvas.height);
那就先记录到这里叭!~其它的遇到了再补充啦!~