Canvas Transformations Matrix

by Francisco Maria Calisto

HTML

<canvas id="canvas" width="300" height="300"></canvas>

CSS

canvas {
    border: 1px red solid;
}

JavaScript

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

//
// GRID
//
for (var x = 0.5; x < 300; x += 10) {ctx.moveTo(x, 0);ctx.lineTo(x, 300);}for (var y = 0.5; y < 300; y += 10) {ctx.moveTo(0, y);ctx.lineTo(300, y);}ctx.strokeStyle = "#ddd";ctx.stroke();


//Horizontal scaling.
var a = 1;

//Horizontal skewing.
var b = 0.1;

//Vertical skewing.
var c = 0.2;

//Vertical scaling.
var d = 1;

//Horizontal moving.
var e = -30;

//Vertical moving.
var f = 0;


ctx.setTransform(a, b, c, d, e, f);

ctx.fillStyle = 'rgb(30, 128, 255)';
ctx.fillRect(70, 70, 160, 160);