我有一个绘制声波的
html5画布.我将背景设置为背景图像,但是,我想要这个背景图像重复.任何人都可以告诉我如何做到这一点,我需要添加到我的代码中:
var backgroundImage = new Image(); backgroundImage.src = 'http://www.samskirrow.com/client-kyra/images/main-bg.jpg'; var canvas; var context; function init(c) { canvas = document.getElementById(c); context = canvas.getContext("2d"); soundManager.onready(function() { initSound(clientID,playlistUrl); }); aniloop(); } function aniloop() { requestAnimFrame(aniloop); drawWave(); } function drawWave() { var step = 10; var scale = 60; // clear context.drawImage(backgroundImage,0); // left wave context.beginPath(); context.moveTo(0,256); for ( var i = 0; i < 256; i++) { context.lineTo(6 * i,257 + waveLeft[i] * 80.); } context.lineWidth = 1; context.strokeStyle = "#000"; context.stroke(); // right wave context.beginPath(); context.moveTo(0,256 + waveRight[i] * 80.); } context.lineWidth = 1; context.strokeStyle = "#000"; context.stroke(); } function updateWave(sound) { waveLeft = sound.waveformData.left; } return { init : init }; })();
您可以在此处查看此代码:
http://www.samskirrow.com/client-kyra
解决方法
使用画布’
createPattern
功能
var canvas = document.getElementById("canvas"),context = canvas.getContext("2d"),img = new Image(); img.src = 'https://www.google.nl/images/srpr/logo3w.png'; img.onload = function(){ // create pattern var ptrn = context.createPattern(img,'repeat'); // Create a pattern with this image,and set it to "repeat". context.fillStyle = ptrn; context.fillRect(0,canvas.width,canvas.height); // context.fillRect(x,y,width,height); }
<canvas id="canvas" width="600px" height="600px"></canvas>
(这是the fastest of the 2 samples).
或者,尝试手动执行:
var canvas = document.getElementById("canvas"),img = new Image(); img.src = 'https://www.google.nl/images/srpr/logo3w.png'; img.onload = function(){ for (var w = 0; w < canvas.width; w += img.width) { for (var h = 0; h < canvas.height; h += img.height) { context.drawImage(img,w,h); } } }
<canvas id="canvas" width="600px" height="600px"></canvas>