Canvas Element Pattern: HTML5

Today lets learn how to create pattern from another canvas element.

In this video tutorial, we take 2 canvas elements. Draw a small circle on one canvas and use it as pattern and draw a bigger circle on the main canvas.

HTML file
index.html




Canvas: HTML5





 
 
 
  


Here we have 2 canvas elements with unique ids. First/Main canvas is 400px X 400px width and height, second canvas is 50px X 50px width and height.
Related: Canvas Basics: HTML5

CSS file
myStyle.css

canvas {
 border: 2px dotted black;
}

We assign 2px black dotted border to both the canvas present on our HTML page.

JavaScript file: Pattern Code
myScript.js

  var pCanvas          = document.getElementById("pattern"); 
  var pContext         = pCanvas.getContext("2d");
  
  pContext.lineWidth   = 2;
  pContext.arc(25, 25, 10, 0, 2 * Math.PI);
  pContext.strokeStyle = "red";
  pContext.fillStyle   = "blue";
  pContext.stroke();
  pContext.fill();

Here we get the pattern id and extract the 2d context APIs. Using pContext object, we draw a small circle of radius 10px with red border and filled with blue color.
Related: Draw Arcs/Circle with Canvas: HTML5

JavaScript file: Main Canvas Code
myScript.js

  context.fillStyle    = context.createPattern(pCanvas, "repeat");
  context.strokeStyle  = "pink";
  context.arc(200, 200, 100, 0, 2 * Math.PI);
  context.stroke();
  context.fill();

We assign previously created pattern to fillStyle of our main canvas context. With this pattern as fillStyle, and a pink border, we draw a circle which has a radius of 100px.
Related: Canvas Image Patterns: HTML5

JavaScript file: Full Code
myScript.js

window.onload = canvas;

function canvas()
{
 var myCanvas = document.getElementById("myCanvas");
 
 if( myCanvas && myCanvas.getContext("2d") ) 
 {
  var context            = myCanvas.getContext("2d");
  
  var pCanvas            = document.getElementById("pattern"); 
  var pContext           = pCanvas.getContext("2d");
  
  pContext.lineWidth     = 2;
  pContext.arc(25, 25, 10, 0, 2 * Math.PI);
  pContext.strokeStyle   = "red";
  pContext.fillStyle     = "blue";
  pContext.stroke();
  pContext.fill();
  
  context.shadowColor    = "black";
  //context.shadowOffsetX= - 10;
  //context.shadowOffsetY= - 10;
  context.shadowBlur     = 10;
  
  context.fillStyle      = context.createPattern(pCanvas, "repeat");
  context.strokeStyle    = "pink";
  context.arc(200, 200, 100, 0, 2 * Math.PI);
  context.stroke();
  context.fill();
 }
}

We’re making the main canvas circle stand out by applying shadow effects.
Related: Shadow Effect on Canvas: HTML5

Canvas Element Pattern: HTML5



YouTube Link: https://www.youtube.com/watch?v=2LuBWIzs_EY [Watch the Video In Full Screen.]



Patterns can be used creatively in HTML5 games development and to draw images which look like having a 2d or 3d dimensions.