W3cubDocs

/DOM

CanvasRenderingContext2D.clip

The CanvasRenderingContext2D.clip() method of the Canvas 2D API turns the path currently being built into the current clipping path.

Syntax

void ctx.clip();
void ctx.clip(fillRule);
void ctx.clip(path, fillRule);

Parameters

fillRule
The algorithm by which to determine if a point is inside a path or outside a path.
Possible values:
path
A Path2D path to clip.

Examples

Using the clip method

This is just a simple code snippet which uses the clip method to create a clipping region.

HTML

<canvas id="canvas"></canvas>

JavaScript

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

// Create clipping region
ctx.beginPath();
ctx.arc(100, 100, 75, 0, Math.PI * 2, false);
ctx.clip();

ctx.fillRect(0, 0, 100,100);

Edit the code below and see your changes update live in the canvas:

Playable code
<canvas id="canvas" width="400" height="200" class="playable-canvas"></canvas>
<div class="playable-buttons">
  <input id="edit" type="button" value="Edit" />
  <input id="reset" type="button" value="Reset" />
</div>
<textarea id="code" class="playable-code">
ctx.arc(100, 100, 75, 0, Math.PI*2, false);
ctx.clip();
ctx.fillRect(0, 0, 100,100);</textarea>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var edit = document.getElementById("edit");
var code = textarea.value;

function drawCanvas() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  eval(textarea.value);
}

reset.addEventListener("click", function() {
  textarea.value = code;
  drawCanvas();
});

edit.addEventListener("click", function() {
  textarea.focus();
})

textarea.addEventListener("input", drawCanvas);
window.addEventListener("load", drawCanvas);

Note: Be aware that clip() only works with shapes added to the path; it doesn't work with shape primitives such as rectangles created with fillRect(). In this case you'd have to use rect() to draw a rectangular path shape to be clipped.

Specifications

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Path parameter ? (Yes) 31 (31) No support ? No support
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Path parameter ? ? (Yes) 31.0 (31) ? ? ?

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clip