Sergomen
@Sergomen
Просто делай добро и оно вернётся

Несколько вопросов о canvas?

Я был несколько дней без инета и меня заинтересовал cnavas. Решил посмотреть в программе Zeal (брограмма-сборник документации чуть ли не обо всём) что там написано и я не понял несколько вещей:
0. Почему метод save используется до того как чтото нарисовать? Вот один из тех примеров:
function draw() {
  var ctx = document.getElementById('canvas').getContext('2d');

  // draw a simple rectangle, but scale it.
  ctx.save(); // я вот тут не понимаю, зачем сохранять "ничего"(наверное правильнее говрить "пустой холст" но я в этом не уверен)?
  ctx.scale(10, 3);
  ctx.fillRect(1, 10, 10, 10);
  ctx.restore();// и зачем это "ничего" восстанавливать?

  // mirror horizontally
  ctx.scale(-1, 1);
  ctx.font = '48px serif';
  ctx.fillText('MDN', -135, 120);
}

1. Почему нельзя объект, например четырехугольник или круг, сохранить в переменную чтобы легче было с ним обращатся? Например как в библиотеке sfml в С++
CircleShape circle(76,60);
circle.setOutlineThickness(2);
circle.setOutlineColor(gray);
circle.move(33,126);

Или может лучше использовать для этого какую-нибудь библиотеку? Если да, то какую лучше?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
WblCHA
@WblCHA
Почему метод scale используется до того как чтото нарисовать?

Чтобы это что-то рисовать с заданным скейлом?

ctx.save(); // я вот тут не понимаю, зачем сохранять "ничего"(наверное правильнее говрить "пустой холст" но я в этом не уверен)?

Потому что этот метод сохраняет текущие настройки холста (скейл, цвет заполнения/обводки, фонт и т.д.).
ctx.restore();// и зачем это "ничего" восстанавливать?
А после восстанавливает их.

Почему нельзя объект, например четырехугольник или круг, сохранить в переменную чтобы легче было с ним обращатся?

А каким образом ты хочешь сохранить в переменную закрашиваемые пиксели? Если хочешь менять, для этого нужно хранить информацию о том, где рисовать, каким цветом, с каким скейлом и т.д. и при каждом изменении всё перерисовывать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы