CanvasRenderingContext2D: createRadialGradient() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

CanvasRenderingContext2D.createRadialGradient() 方法(Canvas 2D API)使用两个圆的大小和坐标来创建一个径向渐变。

此方法返回一个 CanvasGradient 对象。要将其应用于形状,必须先将其赋值给 fillStylestrokeStyle 属性。

注意: 渐变坐标是全局的,即相对于当前坐标空间。当应用于形状时,坐标相对于形状的坐标。

语法

js
createRadialGradient(x0, y0, r0, x1, y1, r1)

createRadialGradient() 方法有六个参数,前三个定义渐变的起始圆,后三个定义结束圆。

参数

x0

起始圆的 x 轴坐标。

y0

起始圆的 y 轴坐标。

r0

起始圆的半径。必须是非负且有限的。

x1

结束圆的 x 轴坐标。

y1

结束圆的 y 轴坐标。

r1

结束圆的半径。必须是非负且有限的。

返回值

一个径向 CanvasGradient 对象,使用两个指定的圆进行初始化。

异常

NotSupportedError DOMException

当参数传递了非有限值时抛出。

IndexSizeError DOMException

当参数传递了负半径时抛出。

示例

使用径向渐变填充矩形

本示例使用 createRadialGradient() 方法初始化一个径向渐变。然后,在渐变的两个圆之间创建三个颜色停止点。最后,将渐变赋值给 canvas 上下文,并渲染为一个填充的矩形。

HTML

html
<canvas id="canvas" width="200" height="200"></canvas>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

// Create a radial gradient
// The inner circle is at x=110, y=90, with radius=30
// The outer circle is at x=100, y=100, with radius=70
const gradient = ctx.createRadialGradient(110, 90, 30, 100, 100, 70);

// Add three color stops
gradient.addColorStop(0, "pink");
gradient.addColorStop(0.9, "white");
gradient.addColorStop(1, "green");

// Set the fill style and draw a rectangle
ctx.fillStyle = gradient;
ctx.fillRect(20, 20, 160, 160);

结果

规范

规范
HTML
# dom-context-2d-createradialgradient-dev

浏览器兼容性

另见