Skip to content Skip to sidebar Skip to footer

HTML5 Canvas Background Image Repeat

I have a html5 canvas that draws a sound wave. I have set the background as an background image, however, I want this background image to repeat. Can anyone tell me how I would do

Solution 1:

Use the canvas' createPattern function

const canvas = document.getElementById("canvas"),
      context = canvas.getContext("2d"),
      img = new Image();

img.src = 'https://www.google.nl/images/srpr/logo3w.png';

img.addEventListener('load', () => {
  const ptrn = context.createPattern(img, 'repeat'); // Create a pattern with this image, and set it to "repeat".
  context.fillStyle = ptrn;
  context.fillRect(0, 0, canvas.width, canvas.height); // context.fillRect(x, y, width, height);
})
<canvas id="canvas" width="600px" height="600px"></canvas>

(This is the fastest of the 2 samples).

Or, try a manual implementation:

const canvas = document.getElementById("canvas"),
      context = canvas.getContext("2d"),
      img = new Image();

img.src = 'https://www.google.nl/images/srpr/logo3w.png';

img.addEventListener('load', () => {
  for (let w = 0; w < canvas.width; w += img.width) {
    for (let h = 0; h < canvas.height; h += img.height) {
      context.drawImage(img, w, h);
    }
  }
})
<canvas id="canvas" width="600px" height="600px"></canvas>

Post a Comment for "HTML5 Canvas Background Image Repeat"