rotate
поворачивает холст (?) Вокруг вашей текущей позиции, которая равна 0, 0 для начала. вам нужно «переместиться» к желаемой центральной точке, чего вы можете достичь с помощью
context.translate(x,y);
после того, как вы перемещаете точку отсчета, вы хотите отцентрировать изображение над этой точкой. Вы можете сделать это, позвонив
context.drawImage(myImage, -(27/2), -(27/2), 27, 27);
это говорит браузеру, что нужно начать рисовать изображение сверху и слева от вашей текущей контрольной точки, по размеру изображения, тогда как до того, как вы начали в своей контрольной точке и рисовали полностью ниже и справа ( все направления относительно поворота холста).
, поскольку ваш холст соответствует размеру вашего изображения, ваш вызов translate
будет использовать то же измерение (27/2) для координат x и y.
так, чтобы сложить все вместе
// initialization:
context.translate(27/2, 27/2);
// onload:
context.rotate(Math.PI * 45 / 180);
context.drawImage(myImage, -(27/2), -(27/2), 27, 27);
edit: также, единицы поворота - радианы, поэтому вам нужно будет переводить градусы в радианы в вашем коде.
правки для перестановки вещей.