Я знаю, что это уже довольно давно, однако:
Вам не нужно воссоздавать холст, как объясняет ItzWarty. Вы можете сделать это:
<html>...
<canvas id="canvas"></canvas>
<canvas id="buffer" style="display:none;"></canvas>
...
</html>
Тогда это будет ваш javascript:
var canvas = document.getElementById('canvas');
var buffer = document.getElementById('buffer');
window.onresize = function(event) {
var w = $(window).width(); //Using jQuery for easy multi browser support.
var h = $(window).height();
buffer.width = w;
buffer.height = h;
buffer.getContext('2d').drawImage(canvas, 0, 0);
canvas.width = w;
canvas.height = h;
canvas.getContext('2d').drawImage(buffer, 0, 0);
}
Здесь вы изменяете только размер холстов и копируете изображение. Я не уверен, но считаю, что производительность немного лучше, и, на мой взгляд, она проще и понятнее.