【发布时间】:2011-04-03 16:19:47
【问题描述】:
我正在尝试获得重复的画布图案。可悲的是,我能找到的所有例子都重复了一张图片。所以我尝试了这个:
function init() {
var canvas = document.getElementById("bg");
var ctx = canvas.getContext("2d");
//creating a new canvas
var canvas = document.createElement('canvas');
canvas.width = 500;
canvas.height = 400;
var img = canvas.getContext("2d");
draw(img);
var objPattern = ctx.createPattern(img, "repeat");
ctx.fillStyle = objPattern;
ctx.fillRect(0, 0, document.body.clientHeight, document.body.clientWidth);
}
function draw(img) {
//img.save();
img.beginPath();
img.moveTo(0.0, 40.0);
img.lineTo(26.9, 36.0);
img.bezierCurveTo(31.7, 36.0, 36.0, 32.1, 36.0, 27.3);
img.lineTo(40.0, 0.0);
img.lineTo(11.8, 3.0);
img.bezierCurveTo(7.0, 3.0, 3.0, 6.9, 3.0, 11.7);
img.lineTo(0.0, 40.0);
img.closePath();
img.fillStyle = "rgb(188, 222, 178)";
img.fill();
img.lineWidth = 0.8;
img.strokeStyle = "rgb(0, 156, 86)";
img.lineJoin = "miter";
img.miterLimit = 4.0;
img.stroke();
//img.restore();
}
并将其包含在 html 文件中,如下所示:
<body onload="init()">
<canvas id="bg" width=100%; height=100%;></canvas>
…
我真的不想使用循环来使用偏移量“手动”重复模式,因为我觉得(并希望)应该有一个更简单的方法。绘制代码中的保存和恢复在一些教程和示例中使用,但它们对我来说没有任何意义,所以我将它们注释掉。
【问题讨论】:
标签: javascript html canvas design-patterns repeat