Предположительно, у вас есть цикл рисования, который рисует кучу вещей.Фон, компас, стрелка для компаса.Возможно, некоторые другие вещи.
Когда вы рисуете с помощью холста, вы вводите команды для контекста, которые похожи на загрузку кисти с краской.
Если вы хотите нарисовать красную линию, а затемсиней линией вы берете красную краску, рисуете одну линию, затем чистите кисть, берете синюю краску и рисуете эту линию.
Контекст холста точно такой же.Здесь вы хотите нарисовать кучу вещей в обычном контексте холста.Затем вы хотите сохранить контекст с помощью ctx.save()
и выполнить свои повороты.
Когда вы переводите или вращаете или просто устанавливаете контекст, вы не меняете вещи, которые уже были сделаны, выпросто сказав «для всего, что после этого, примените эти операции».
Итак, вы нарисуете стрелку / стрелку компаса.
Затем позвоните ctx.restore()
и продолжайте свой веселый путь.Это предотвратит вращение объектов, нарисованных после стрелки.
функции сохранения и восстановления контекста отслеживают старое состояние, поэтому вы не рисуете все после стрелки с повернутым контекстом.Это все равно что мыть кисть, но лучше, потому что вы помните, что раньше она была синей на ней вместо того, чтобы мыть ее каждый раз.
Кстати, если вы хотите сбросить настройкиполностью переведите контекст холста в его состояние по умолчанию (черные кисти, преобразование по умолчанию, без теней и т. д.), вы можете просто сделать canvas.width = canvas.width
, и он полностью сбросит контекст.