8

我正在尝试获取图像来填满我的画布。这是我正在尝试的代码:

var blueprint_background = new Image();
blueprint_background.src = 'images/blueprint_background.png'; 
var pattern = context.createPattern(blueprint_background, "repeat");

context.fillStyle = pattern;
context.fill();

问题是什么都没有出现。我能够做基本的 context.fillRect(..) 示例,但这给我带来了麻烦。

谢谢。

4

2 回答 2

12

您必须等到图像加载后,使用图像的 onload 属性才能知道它何时加载。

var blueprint_background = new Image();
blueprint_background.src = 'images/blueprint_background.png'; 
blueprint_background.onload = function(){
    var pattern = context.createPattern(this, "repeat");
    context.fillStyle = pattern;
    context.fill();
};
于 2012-05-29T00:07:55.477 回答
0

请注意是否有人想从 Worker 中的图像创建模式。

内部工人类图像未定义!

ReferenceError: Image is not defined

在这种情况下,我们可以执行以下操作:

const result = await fetch('./image.png');
const blob = await result.blob();
const image = await createImageBitmap(blob);
const pattern = canvasContext2D.createPattern(image, 'repeat');

然后简单地填写 OffscreenCanvasContext2D:

canvasContext2D.fillStyle = pattern;
canvasContext2D.fill();

参考:

于 2021-08-04T20:59:19.130 回答