<!DOCTYPE html> <meta charset="utf-8"> <link rel=match href=drawimage_canvas_10_ref.html> <style> html, body { margin: 0; } </style> <canvas id="dest" height="100" width="100"></canvas> <script> var sourceWidth = 50; var sourceHeight = 50; var smoothingEnabled = false; var destCanvas = document.getElementById('dest'); var sourceCanvas = document.createElement('canvas'); sourceCanvas.width = sourceWidth; sourceCanvas.height = sourceHeight; var sourceCtx = sourceCanvas.getContext('2d'); sourceCtx.fillStyle = "#00FFFF"; sourceCtx.fillRect(0, 0, sourceWidth, sourceHeight); sourceCtx.fillStyle = "#000000"; sourceCtx.fillRect(5,5,40,40); var destCtx = destCanvas.getContext('2d'); destCtx.fillStyle = "#FF0000"; destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height); destCtx.imageSmoothingEnabled = smoothingEnabled; // The destination rectangle is larger than the destination canvas // When the destination rectangle is outside the destination image (the scratch bitmap), // the pixels that land outside the scratch bitmap are discarded, // as if the destination was an infinite canvas whose rendering was // clipped to the dimensions of the scratch bitmap. destCtx.drawImage(sourceCanvas, 0, 0, 50, 50, 0, 0, 200, 200); </script>