холст имеет те очень полезные преобразования, которые вы можете использовать.
То, что вам сейчас нужно - это холст '.translate
и .rotate
Допустим, вы создаете функцию, которая принимает img
изображение, x
координату, y
координату и rad
поворот к аргументу верхнего левого угла, вот как вы это сделаете:
function displayRotatedImage( img, x, y, rad ){
ctx.translate( x, y ); // ctx is your canvas context
ctx.rotate( rad );
ctx.drawImage( img, 0, 0 );
ctx.rotate( -rad ); // don't forget to get everything to its previous state!
ctx.translate( -x, -y );
}
Вы видите, что происходит? сначала мы перемещаемся к оси вращения, используя .translate
, затем мы вращаемся вокруг этой оси, используя .rotate
, и мы рисуем наше изображение относительно нашей системы, и так как 0 0 является нашей точкой поворота сейчас, благодаря переводя, мы просто рисуем изображение в 0 0. Теперь мы должны повернуть и снять перевод, чтобы перевести холст к его первоначальному преобразованию;)