CanvasRenderingContext2D:createPattern() 方法
基线 广泛可用
此功能已经成熟,可以在许多设备和浏览器版本上正常使用。它自 2015 年 7 月.
报告反馈
Canvas 2D API 的 CanvasRenderingContext2D.createPattern()
方法使用指定的图像和重复方式创建图案。此方法返回一个 CanvasPattern
。
语法
此方法不会直接在画布上绘制任何内容。它创建的图案必须分配给画布上下文填充样式
CanvasRenderingContext2D.fillStyle
或描边样式 CanvasRenderingContext2D.strokeStyle
属性,之后才能应用于任何随后的绘制操作。createPattern(image, repetition)
js
参数
-
image
VideoFrame
-
repetition
- 指示如何重复图案图像的字符串。可能的值为
"repeat"
(两个方向)"repeat-x"
(仅水平)"repeat-y"
(仅垂直)
"no-repeat"
(两个方向都不)
一个 null
值与空字符串 (""
) 相同:两者都是 "repeat"
的同义词。
返回值
-
CanvasPattern
描述图案的不透明对象。
示例
如果 image
未完全加载 (HTMLImageElement.complete
为 false
),则返回 null
。
从图像创建图案
此示例使用 createPattern()
方法使用重复的源图像创建一个 CanvasPattern
。创建后,图案将分配给画布上下文的填充样式,并应用于矩形。
HTML
原始图像如下所示
<canvas id="canvas" width="300" height="300"></canvas>
JavaScript
此方法不会直接在画布上绘制任何内容。它创建的图案必须分配给画布上下文填充样式
CanvasRenderingContext2D.fillStyle
或描边样式 CanvasRenderingContext2D.strokeStyle
属性,之后才能应用于任何随后的绘制操作。const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
img.src = "canvas_createpattern.png";
// Only use the image after it's loaded
img.onload = () => {
const pattern = ctx.createPattern(img, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, 300, 300);
};
html
从画布创建图案
JavaScript
此方法不会直接在画布上绘制任何内容。它创建的图案必须分配给画布上下文填充样式
CanvasRenderingContext2D.fillStyle
或描边样式 CanvasRenderingContext2D.strokeStyle
属性,之后才能应用于任何随后的绘制操作。// Create a pattern, offscreen
const patternCanvas = document.createElement("canvas");
const patternContext = patternCanvas.getContext("2d");
// Give the pattern a width and height of 50
patternCanvas.width = 50;
patternCanvas.height = 50;
// Give the pattern a background color and draw an arc
patternContext.fillStyle = "#fec";
patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);
patternContext.arc(0, 0, 50, 0, 0.5 * Math.PI);
patternContext.stroke();
// Create our primary canvas and fill it with the pattern
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const pattern = ctx.createPattern(patternCanvas, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Add our primary canvas to the webpage
document.body.appendChild(canvas);
在此示例中,我们从离屏画布的内容创建图案。然后,我们将它应用于主画布的填充样式,并使用图案填充该画布。
规范
结果 |
---|
规范 # HTML 标准 |
浏览器兼容性
dom-context-2d-createpattern-dev
另请参阅
- 定义此方法的接口:
CanvasRenderingContext2D
返回值