Рассмотрим следующий пример.Как сдвинуть все действия холста в одной функции с помощью другой функции выборочно
var ctx = document.createElement('canvas').getContext('2d');
function draw(){
ctx.fillRect(10,10,10,10);
};
function render(){
var coordinates = {x:100,y:200};
draw();
};
Вопрос
Это достаточно просто нарисовать черный прямоугольник 10 пикселей от верхней и левой части холста. Однако как я могу поручить программе переместить все, нарисованные в функции draw
, на значения в coordinates
?
Мои Современные идеи и почему они не будут работать
- Используйте метод перевода путем сохранения и восстановления контекста. Это ненадежно, потому что функция розыгрыша может включать сохранение и восстановление, а также конфликты.
- Нарисуйте все в функции
draw
на отдельном холсте, а затем нарисуйте этот холст с помощьюdrawImage
на желаемый холст с желаемыми переводами. Пример:draImage(canvas,coordinates.x,coordinates.y);
. Это не работает, поскольку поскольку функцияdraw
была создана в той же области, что иctx
, даже еслиctx
переопределено вrender
, оно все равно будет рисоваться с использованием оригиналаctx
. - Включите функцию в строку и используйте регулярное выражение для смещения всех значений чертежа ... Очень непрактично.
- Использование манипуляции с пикселями ... Это также приведет к перемещению вещей за пределы функции рисования, поэтому его необходимо отбросить.
К сожалению, это не вариант, потому что функция рисования отправлена пользователем, и мне бы хотелось, чтобы все, что они инструктировали в этой функции, было сдвинуто, однако программа должна быть ею. –