Я использую решение phrogz для масштабирования и панорамирования. В основном для блокнота для рисования.
Проблема в том, что после масштабирования и панорамирования движение мыши и движение рисования имеют небольшое расстояние, т.е. я навожу мышь где-то, она рисует в другом месте.
Синий цвет представляет мое фактическое движение мыши. Пример
Из его примера может показаться, что он справился с этим здесь, однако я все еще сталкиваюсь с проблемой.
canvas.addEventListener('mousedown',function(evt){
document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';
lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);
lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);
dragStart = ctx.transformedPoint(lastX,lastY);
dragged = false;
},false);