Canvas如何绘制渐变的圆形和文字?

径向渐变,听起来有点复杂,但其实它就是一种从起点到终点,颜色逐渐变化的圆形效果。在Canvas中,我们可以使用createRadialGradient方法来制作这种渐变。

这个方法有六个参数,分别是开始圆形的x轴坐标、y轴坐标和半径,以及结束圆形的x轴坐标、y轴坐标和半径。听起来有点晕?没关系,我来给您解释一下。

  • x0和y0:这两个参数定义了渐变的起始点。
  • r0:这是渐变起始圆的半径。
  • x1、y1和r1:这三个参数定义了渐变的终点,也就是结束圆的x、y坐标和半径。

当你输入这些参数后,这个方法就会返回一个CanvasGradient对象,这个对象有一个非常有用的方法叫做addColorStop()。通过这个方法,你可以为渐变添加颜色。你可以设置颜色的位置,以及在渐变中显示的颜色。

那么,如何使用呢?这里有一个例子供您参考:

首先,你需要获取Canvas的2d渲染上下文,然后调用createRadialGradient方法来创建一个径向渐变。接着,使用addColorStop()方法来添加颜色。最后,你可以选择一个形状(比如圆形),然后使用fillStyle属性来设置填充样式,最后调用fill()方法来填充这个形状。

示例效果与源代码:

运行效果

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
37
38
39
40
41
42
43
44
45
46
47
48
49
<!DOCTYPE html>
<html>

<head>
<title>渲染效果(gradient)</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="图形系统开发实战:基础篇 示例">
<meta name="author" content="hjq">
<meta name="keywords" content="canvas,ladder,javascript">
<script src="./js/helper.js"></script>
</head>

<body style="overflow: hidden; margin:10px;">
<canvas id="canvas" width="800" height="250" style="border:solid 1px #CCCCCC;"></canvas>
</body>
<script>
// 从页面中获取画板对象
let canvas = document.getElementById('canvas');
// 从画板中获取“2D渲染上下文”对象
let ctx = canvas.getContext('2d');
// 绘制背景网格
drawGrid('lightgray', 10, 10);

// 建立径向渐变,其坐标相对于画布的坐标
const gradient = ctx.createRadialGradient(125, 125, 0, 125, 125, 160);
gradient.addColorStop(0.05, "gold");
gradient.addColorStop(0.95, "red");
ctx.fillStyle = gradient;

// 绘制圆
ctx.beginPath();
ctx.arc(125, 125, 75, 0, 2 * Math.PI);
ctx.fill();

// 绘制矩形
ctx.translate(200, 0);
ctx.beginPath();
ctx.rect(50, 50, 150, 150);
ctx.fill();

// 绘制文字
ctx.translate(250, 0);
ctx.font = "150px 黑体"
ctx.textBaseline = "top";
ctx.fillText("图形", 0, 50);
</script>

</html>

尝试一下 »