Подтвердить что ты не робот

Использование холста HTML5 - поворот изображения о произвольной точке

Поверните циферблат поверх полукруглого (северного полушария) изображения в качестве фона. диапазон может быть 0 - 180 градусов. на входе в метод, который делает преобразование холста, циферблат будет вращаться и останавливаться по согласованному значению. Здесь, что я пытался на основе справки и образца, переданного phrogz

4b9b3361

Ответ 1

В общем, что вы хотите сделать:

  • Преобразование контекста в точку на холсте, вокруг которого должен вращаться объект.
  • Поворот контекста.
  • Преобразование контекста отрицательным смещением внутри объекта для центра вращения.
  • Нарисуйте объект на 0,0.

В коде:

ctx.save();
ctx.translate( canvasRotationCenterX, canvasRotationCenterY );
ctx.rotate( rotationAmountInRadians );
ctx.translate( -objectRotationCenterX, -objectRotationCenterY );
ctx.drawImage( myImageOrCanvas, 0, 0 );
ctx.restore();

Здесь рабочий пример, показывающий это в действии. (Математика для вращения была просто экспериментально взломана, чтобы найти количество колебания и смещение в радианах, которые соответствуют быстро набросанному колеблющему колесу.)

Как видно, вы можете заменить вызов translate на шаге № 3 выше с смещениями на вызов drawImage(). Например:

ctx.drawImage( myImageOrCanvas, -objectRotationCenterX, -objectRotationCenterY );

Использование преобразования контекста рекомендуется, когда у вас есть несколько объектов для рисования в одном и том же месте.