在Canvas画布上,如何实现在图像上叠加文字?

在Canvas画布上绘制图像时,由于图像的加载是异步的,因此需要采用异步调用的方法来确保图像在加载完成后再进行绘制。

在Canvas画布上实现图像上叠加文字是一个常见的需求,通常可以通过以下步骤来完成:

  1. 创建一个Canvas元素,并获取其绘图上下文。
  2. 在Canvas上绘制图像。
  3. 在图像上绘制文字。

下面是一个简单的HTML文件示例,展示了如何在Canvas画布上实现图像上叠加文字:

示例效果与源代码:

运行效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Canvas图像上叠加文字示例</title>
</head>
<body>
<canvas id="myCanvas" width="400" height="400" style="border:1px solid #000000;"></canvas>
<script>
// 获取Canvas元素和绘图上下文
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');

// 创建一个新的图像对象
var img = new Image();
img.src = '/examples/canvas-qa/119/image/1.jpg'; // 替换为你的图像路径

// 当图像加载完成时绘制图像和文字
img.onload = function() {
// 绘制图像
ctx.drawImage(img, 10, 10);

// 设置文字样式
ctx.font = '24px Arial';
ctx.fillStyle = 'white'; // 文字颜色
ctx.textAlign = 'center'; // 文字对齐方式
ctx.textBaseline = 'middle'; // 文字基线对齐方式

// 在图像上绘制文字
var text = '图形开发学院';
ctx.fillText(text, 100, 30);
};
</script>
</body>
</html>

尝试一下 »

在这个示例中,我们首先创建了一个Canvas元素,并设置了其宽度和高度。然后,我们使用JavaScript获取Canvas元素和绘图上下文。接下来,我们创建了一个新的图像对象,并设置了其src属性为图像的路径(在实际应用中,你需要将/examples/canvas-qa/118/image/1.jpg替换为你的图像路径)。

当图像加载完成时,我们使用drawImage方法将图像绘制到Canvas上。然后,我们设置了文字的样式(字体、颜色、对齐方式等),并使用fillText方法在图像上绘制了文字。

请注意,由于图像加载是异步的,因此我们需要将绘制图像和文字的代码放在img.onload事件处理函数中,以确保在图像加载完成后才进行绘制。

这个示例展示了如何在Canvas画布上实现图像上叠加文字的基本方法,你可以根据需要进行进一步的定制和扩展。