我想在canvas中画一条线(我可以做到),但我想使用背景图案在线上重复出现(除非有其他方法在canvas中将重复的背景图像放在线上?)。如何绘制带有背景图像的线?我了解剪切的概念,但它似乎只适用于形状...而不是描边。有什么想法吗?这是我尝试的jsfiddle链接:http://jsfiddle.net/Z9cd7/
function (callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
var radius = 50;
var x = 100;
var dx = 10;
var y = 100;
var dy = 10;
var delay = 10;
var img = new Image();
img.onload = function () {
var canvas1 = document.getElementById("image");
var ctxImg = canvas1.getContext("2d");
ctxImg.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
/*
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.beginPath();
ctx.arc(100, 100, radius, 0, 2 * Math.PI, false);
ctx.clip();
ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
ctx.restore();
*/
ctx.moveTo(0,0)
ctx.lineTo(100,100)
ctx.lineWidth = 10;
ctx.stroke()
ctx.clip();
ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);
ctx.restore();
//animate();
}
img.src = "http://lh3.ggpht.com/_Z-i7eF_ACGI/TRxpFywLCxI/AAAAAAAAAD8/ACsxiuO_C1g/house%20vector.png";
delay
++ 只是 OP 的原始小提琴中剩下的东西。我只是在必要的部分周围切了一点,使它更清晰(就像答案中一样) - 我没有清除其他部分(以使代码在某种程度上可识别为 OP)。 - user1693593ctx.moveTo(10, 10);
之前加上cxt.beginPath();
。如果没有这行代码,如果你多次调用它,它将重新绘制所有先前的绘图操作,而不仅仅是最新的线条。 - Shane O Sullivan