На самом деле вы можете нарисовать все, что вы хотите повернуть, в закадровый холст и нарисовать это на своем основном холсте. Я заимствовал этот код из Google IO Talk:
rotateAndCache = function(image,angle) {
var offscreenCanvas = document.createElement('canvas');
var offscreenCtx = offscreenCanvas.getContext('2d');
var size = Math.max(image.width, image.height);
offscreenCanvas.width = size;
offscreenCanvas.height = size;
offscreenCtx.translate(size/2, size/2);
offscreenCtx.rotate(angle + Math.PI/2);
offscreenCtx.drawImage(image, -(image.width/2), -(image.height/2));
return offscreenCanvas;
}
затем кэшируйте его с помощью:
rotobj = rotateAndCache(myimg,myangle)
и в вашем коде:
mycontext.drawImage(rotobj,x_coord,y_coord)
Это полезно, только если у вас есть объект, который повернут на угол только один раз и впоследствии подвергается только преобразованиям.